[asterisk-commits] kharwell: branch 12 r398062 - in /branches/12: ./ main/manager.c res/res_agi.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Aug 30 12:57:18 CDT 2013
Author: kharwell
Date: Fri Aug 30 12:57:16 2013
New Revision: 398062
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=398062
Log:
Memory leak fix
ast_xmldoc_printable returns an allocated block that must be freed by the
caller. Fixed manager.c and res_agi.c to stop leaking these results.
(closes issue ASTERISK-22395)
Reported by: Corey Farrell
Patches:
manager-leaks-12.patch uploaded by coreyfarrell (license 5909)
res_agi-xmldoc-leaks.patch uploaded by coreyfarrell (license 5909)
........
Merged revisions 398060 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 398061 from http://svn.asterisk.org/svn/asterisk/branches/11
Modified:
branches/12/ (props changed)
branches/12/main/manager.c
branches/12/res/res_agi.c
Propchange: branches/12/
------------------------------------------------------------------------------
Binary property 'branch-11-merged' - no diff available.
Modified: branches/12/main/manager.c
URL: http://svnview.digium.com/svn/asterisk/branches/12/main/manager.c?view=diff&rev=398062&r1=398061&r2=398062
==============================================================================
--- branches/12/main/manager.c (original)
+++ branches/12/main/manager.c Fri Aug 30 12:57:16 2013
@@ -1924,19 +1924,19 @@
#ifdef AST_XML_DOCS
if (cur->docsrc == AST_XML_DOC) {
+ char *syntax = ast_xmldoc_printable(S_OR(cur->syntax, "Not available"), 1);
+ char *synopsis = ast_xmldoc_printable(S_OR(cur->synopsis, "Not available"), 1);
+ char *description = ast_xmldoc_printable(S_OR(cur->description, "Not available"), 1);
+ char *arguments = ast_xmldoc_printable(S_OR(cur->arguments, "Not available"), 1);
+ char *seealso = ast_xmldoc_printable(S_OR(cur->seealso, "Not available"), 1);
+ char *privilege = ast_xmldoc_printable(S_OR(authority->str, "Not available"), 1);
ast_cli(a->fd, "%s%s\n\n%s%s\n\n%s%s\n\n%s%s\n\n%s%s\n\n%s%s\n\n",
- syntax_title,
- ast_xmldoc_printable(S_OR(cur->syntax, "Not available"), 1),
- synopsis_title,
- ast_xmldoc_printable(S_OR(cur->synopsis, "Not available"), 1),
- description_title,
- ast_xmldoc_printable(S_OR(cur->description, "Not available"), 1),
- arguments_title,
- ast_xmldoc_printable(S_OR(cur->arguments, "Not available"), 1),
- seealso_title,
- ast_xmldoc_printable(S_OR(cur->seealso, "Not available"), 1),
- privilege_title,
- ast_xmldoc_printable(S_OR(authority->str, "Not available"), 1));
+ syntax_title, syntax,
+ synopsis_title, synopsis,
+ description_title, description,
+ arguments_title, arguments,
+ seealso_title, seealso,
+ privilege_title, privilege);
} else
#endif
{
@@ -7560,29 +7560,29 @@
ast_cli(a->fd, "Event: %s\n", a->argv[3]);
for (temp = item; temp; temp = temp->next) {
if (!ast_strlen_zero(ast_str_buffer(temp->synopsis))) {
- ast_cli(a->fd, "%s%s\n\n",
- synopsis_title,
- ast_xmldoc_printable(ast_str_buffer(temp->synopsis), 1));
+ char *synopsis = ast_xmldoc_printable(ast_str_buffer(temp->synopsis), 1);
+ ast_cli(a->fd, "%s%s\n\n", synopsis_title, synopsis);
+ ast_free(synopsis);
}
if (!ast_strlen_zero(ast_str_buffer(temp->syntax))) {
- ast_cli(a->fd, "%s%s\n\n",
- syntax_title,
- ast_xmldoc_printable(ast_str_buffer(temp->syntax), 1));
+ char *syntax = ast_xmldoc_printable(ast_str_buffer(temp->syntax), 1);
+ ast_cli(a->fd, "%s%s\n\n", syntax_title, syntax);
+ ast_free(syntax);
}
if (!ast_strlen_zero(ast_str_buffer(temp->description))) {
- ast_cli(a->fd, "%s%s\n\n",
- description_title,
- ast_xmldoc_printable(ast_str_buffer(temp->description), 1));
+ char *description = ast_xmldoc_printable(ast_str_buffer(temp->description), 1);
+ ast_cli(a->fd, "%s%s\n\n", description_title, description);
+ ast_free(description);
}
if (!ast_strlen_zero(ast_str_buffer(temp->arguments))) {
- ast_cli(a->fd, "%s%s\n\n",
- arguments_title,
- ast_xmldoc_printable(ast_str_buffer(temp->arguments), 1));
+ char *arguments = ast_xmldoc_printable(ast_str_buffer(temp->arguments), 1);
+ ast_cli(a->fd, "%s%s\n\n", arguments_title, arguments);
+ ast_free(arguments);
}
if (!ast_strlen_zero(ast_str_buffer(temp->seealso))) {
- ast_cli(a->fd, "%s%s\n\n",
- seealso_title,
- ast_xmldoc_printable(ast_str_buffer(temp->seealso), 1));
+ char *seealso = ast_xmldoc_printable(ast_str_buffer(temp->seealso), 1);
+ ast_cli(a->fd, "%s%s\n\n", seealso_title, seealso);
+ ast_free(seealso);
}
}
Modified: branches/12/res/res_agi.c
URL: http://svnview.digium.com/svn/asterisk/branches/12/res/res_agi.c?view=diff&rev=398062&r1=398061&r2=398062
==============================================================================
--- branches/12/res/res_agi.c (original)
+++ branches/12/res/res_agi.c Fri Aug 30 12:57:16 2013
@@ -4042,9 +4042,6 @@
AST_RWLIST_RDLOCK(&agi_commands);
AST_RWLIST_TRAVERSE(&agi_commands, command, list) {
-#ifdef AST_XML_DOCS
- char *stringptmp;
-#endif
char *tempstr, *stringp;
if (!command->cmda[0]) /* end ? */
@@ -4057,8 +4054,7 @@
fprintf(htmlfile, "<TR><TD><TABLE BORDER=\"1\" CELLPADDING=\"5\" WIDTH=\"100%%\">\n");
fprintf(htmlfile, "<TR><TH ALIGN=\"CENTER\"><B>%s - %s</B></TH></TR>\n", fullcmd, command->summary);
#ifdef AST_XML_DOCS
- stringptmp = ast_xmldoc_printable(command->usage, 0);
- stringp = ast_strdup(stringptmp);
+ stringp = ast_xmldoc_printable(command->usage, 0);
#else
stringp = ast_strdup(command->usage);
#endif
@@ -4076,9 +4072,6 @@
fprintf(htmlfile, "</TD></TR>\n");
fprintf(htmlfile, "</TABLE></TD></TR>\n\n");
ast_free(stringp);
-#ifdef AST_XML_DOCS
- ast_free(stringptmp);
-#endif
}
AST_RWLIST_UNLOCK(&agi_commands);
fprintf(htmlfile, "</TABLE>\n</BODY>\n</HTML>\n");
More information about the asterisk-commits
mailing list