Module: sip-router Branch: 4.0 Commit: d17ff203507956f4ce37ee9c64c17b586cfcb437 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=d17ff203...
Author: Hugh Waite hugh.waite@crocodile-rcs.com Committer: Hugh Waite hugh.waite@crocodile-rcs.com Date: Wed Oct 30 17:12:05 2013 +0000
modules/rls: Fix memory leak in rls - Leak would occur in two error cases - Also improved diagnostics to display uri on various failures (cherry picked from commit 52ac54133f70776a2dfe54e1789de8b1cae02a05)
---
modules/rls/notify.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/modules/rls/notify.c b/modules/rls/notify.c index 6738f91..eb6a0e1 100644 --- a/modules/rls/notify.c +++ b/modules/rls/notify.c @@ -1028,6 +1028,7 @@ int process_list_and_exec(xmlNodePtr list_node, str username, str domain, uri.len = strlen(uri.s); if (uri.len > MAX_URI_SIZE-1) { LM_ERR("XCAP URI is too long\n"); + xmlFree(uri.s); return -1; } LM_DBG("got resource-list uri <%.*s>\n", uri.len, uri.s); @@ -1036,6 +1037,7 @@ int process_list_and_exec(xmlNodePtr list_node, str username, str domain, unescaped_uri.len = 0; if (un_escape(&uri, &unescaped_uri) < 0) { LM_ERR("Error un-escaping XCAP URI\n"); + xmlFree(uri.s); return -1; } unescaped_uri.s[unescaped_uri.len] = 0; @@ -1047,7 +1049,7 @@ int process_list_and_exec(xmlNodePtr list_node, str username, str domain, && (hostname.len == 0 || check_self(&hostname, 0, PROTO_NONE) == 1)) { - LM_DBG("fetching local <resource-list/>\n"); + LM_DBG("fetching local <resource-list - %.*s>\n", uri.len, uri.s); if (rls_get_resource_list(&rl_uri, &username, &domain, &rl_node, &rl_doc)>0) { LM_DBG("calling myself for rl_node\n"); @@ -1057,7 +1059,7 @@ int process_list_and_exec(xmlNodePtr list_node, str username, str domain, } else { - LM_ERR("<resource-list/> not found\n"); + LM_ERR("<resource-list - %.*s> not found\n", uri.len, uri.s); xmlFree(uri.s); return -1; } @@ -1065,14 +1067,14 @@ int process_list_and_exec(xmlNodePtr list_node, str username, str domain, } else { - LM_ERR("<resource-list/> is not local - unsupported at this time\n"); + LM_ERR("<resource-list - %.*s> is not local - unsupported at this time\n", uri.len, uri.s); xmlFree(uri.s); return -1; } } else { - LM_ERR("unable to parse URI for <resource-list/>\n"); + LM_ERR("unable to parse URI for <resource-list - %.*s>\n", uri.len, uri.s); xmlFree(uri.s); return -1; }