don't use memory after free when using naptr with mod_enum with multiple routes

This commit is contained in:
Brian West 2014-04-28 13:03:09 -05:00
parent a83fde3543
commit 5c07c3eb03
1 changed files with 6 additions and 4 deletions

View File

@ -368,7 +368,7 @@ static void parse_naptr(const ldns_rr *naptr, const char *number, enum_record_t
int proceed = 0, ovector[30];
char *substituted = NULL;
char *substituted_2 = NULL;
char *uri;
char *orig_uri;
char *uri_expanded = NULL;
enum_route_t *route;
int supported = 0;
@ -385,13 +385,15 @@ static void parse_naptr(const ldns_rr *naptr, const char *number, enum_record_t
memset(substituted, 0, len);
switch_perform_substitution(re, proceed, replace, number, substituted, len, ovector);
uri = substituted;
orig_uri = substituted;
} else {
uri = replace;
orig_uri = replace;
}
switch_mutex_lock(MUTEX);
for (route = globals.route_order; route; route = route->next) {
char *uri = orig_uri;
if (strcasecmp(service, route->service)) {
continue;
}
@ -437,7 +439,7 @@ static void parse_naptr(const ldns_rr *naptr, const char *number, enum_record_t
switch_mutex_unlock(MUTEX);
if (!supported) {
add_result(results, order, preference, service, uri, 0);
add_result(results, order, preference, service, orig_uri, 0);
}
switch_safe_free(substituted);