diff --git a/dmtree/tr181/bridging.c b/dmtree/tr181/bridging.c index 1127c685..8856631e 100644 --- a/dmtree/tr181/bridging.c +++ b/dmtree/tr181/bridging.c @@ -1623,7 +1623,7 @@ static void get_priority(char *uci_opt_name, void *data, char **value) static void set_priority(char *uci_opt_name, void *data, char *value) { - char buf[4]; + char buf[16]; char *pch, *pchr; int i; diff --git a/dmtree/tr181/ip.c b/dmtree/tr181/ip.c index e607140f..bdaa6ec6 100644 --- a/dmtree/tr181/ip.c +++ b/dmtree/tr181/ip.c @@ -219,7 +219,13 @@ static int set_IP_IPv6Enable(char *refparam, struct dmctx *ctx, void *data, char char *buffer = dmcalloc(1, length+1); if (buffer) { fseek(fp, 0, SEEK_SET); - fread(buffer, 1, length, fp); + size_t len = fread(buffer, 1, length, fp); + if (len != length) { + dmfree(buffer); + fclose(fp); + break; + } + char *ptr = strstr(buffer, "net.ipv6.conf.all.disable_ipv6"); if (ptr) { *(ptr+31) = (b) ? '0' : '1';