Mercurial > hg > dhcpcd
changeset 2196:daa4ed46377e draft
Fix some memory issues.
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Fri, 06 Dec 2013 19:56:04 +0000 |
| parents | 97118e44508a |
| children | 0599335f7a36 |
| files | if-options.c |
| diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/if-options.c Fri Dec 06 19:15:06 2013 +0000 +++ b/if-options.c Fri Dec 06 19:56:04 2013 +0000 @@ -1471,7 +1471,8 @@ s = 0; np = NULL; } - vivco = realloc(ifo->vivco, ifo->vivco_len + 1); + vivco = realloc(ifo->vivco, sizeof(*ifo->vivco) * + (ifo->vivco_len + 1)); if (vivco == NULL) { syslog(LOG_ERR, "%s: %m", __func__); return -1; @@ -1760,6 +1761,7 @@ { size_t i; struct dhcp_opt *opt; + struct vivco *vo; if (ifo) { if (ifo->environ) { @@ -1789,11 +1791,16 @@ i++, opt++) free_dhcp_opt_embenc(opt); free(ifo->dhcp6_override); + for (i = 0, vo = ifo->vivco; + i < ifo->vivco_len; + i++, vo++) + free(vo->data); + free(ifo->vivco); for (i = 0, opt = ifo->vivso_override; i < ifo->vivso_override_len; i++, opt++) free_dhcp_opt_embenc(opt); - free(ifo->dhcp6_override); + free(ifo->vivso_override); #ifdef INET6 for (i = 0; i < ifo->ia_len; i++)
