Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP5:GA
net-snmp
net-snmp-5.7.3-fix-potential-bad-free.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File net-snmp-5.7.3-fix-potential-bad-free.patch of Package net-snmp
commit d27ccfba26840ef8446152c007557ca4daa45a8f Author: Jan Safranek <jsafranek@users.sourceforge.net> Date: Mon Jan 18 12:38:58 2016 +0100 Fixed potential bad free. When a 'default_domain' starts with a comma ',', the first strtok() returns pointer somwehere to the 'default_domain' duplicate and not to the first character. When cleaning up, make sure we try to free the duplicate (i.e. tokenized_domain) and not the first found token (which may be different). diff --git a/snmplib/snmp_transport.c b/snmplib/snmp_transport.c index 29bc50a6d2..b3cbcc2e7e 100644 --- a/snmplib/snmp_transport.c +++ b/snmplib/snmp_transport.c @@ -499,6 +499,7 @@ netsnmp_tdomain_transport_full(const char *application, int any_found = 0; char buf[SNMP_MAXPATH]; char **lspec = 0; + char *tokenized_domain = 0; DEBUGMSGTL(("tdomain", "tdomain_transport_full(\"%s\", \"%s\", %d, \"%s\", \"%s\")\n", @@ -593,13 +594,13 @@ netsnmp_tdomain_transport_full(const char *application, else { int commas = 0; const char *cp = default_domain; - char *dup = strdup(default_domain); char *ptr = NULL; + tokenized_domain = strdup(default_domain); while (*++cp) if (*cp == ',') commas++; lspec = calloc(commas+2, sizeof(char *)); commas = 1; - lspec[0] = strtok_r(dup, ",", &ptr); + lspec[0] = strtok_r(tokenized_domain, ",", &ptr); while ((lspec[commas++] = strtok_r(NULL, ",", &ptr))) ; spec = (const char * const *)lspec; @@ -653,7 +654,7 @@ netsnmp_tdomain_transport_full(const char *application, t = match->f_create_from_tstring_new(addr, local, addr2); if (t) { if (lspec) { - free(lspec[0]); + free(tokenized_domain); free(lspec); } return t; @@ -668,7 +669,7 @@ netsnmp_tdomain_transport_full(const char *application, if (!any_found) snmp_log(LOG_ERR, "No support for any checked transport domain\n"); if (lspec) { - free(lspec[0]); + free(tokenized_domain); free(lspec); } return NULL;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor