[Freeswitch-svn] [commit] r8478 - freeswitch/trunk/src/mod/applications/mod_commands
Freeswitch SVN
mikej at freeswitch.org
Mon May 19 17:44:11 EDT 2008
Author: mikej
Date: Mon May 19 17:44:11 2008
New Revision: 8478
Modified:
freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c
Log:
handle allocation error and potential leak. Found by Klockwork (www.klocwork.com)
Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c (original)
+++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c Mon May 19 17:44:11 2008
@@ -1513,7 +1513,7 @@
timeout = atoi(argv[6]);
}
- if (switch_ivr_originate(NULL, &caller_session, &cause, aleg, timeout, NULL, cid_name, cid_num, NULL, SOF_NONE) != SWITCH_STATUS_SUCCESS) {
+ if (switch_ivr_originate(NULL, &caller_session, &cause, aleg, timeout, NULL, cid_name, cid_num, NULL, SOF_NONE) != SWITCH_STATUS_SUCCESS || !caller_session) {
if (machine) {
stream->write_function(stream, "-ERR %s\n", switch_channel_cause2str(cause));
} else {
@@ -1555,9 +1555,7 @@
stream->write_function(stream, "+OK Created Session: %s\n", switch_core_session_get_uuid(caller_session));
}
- if (caller_session) {
- switch_core_session_rwunlock(caller_session);
- }
+ switch_core_session_rwunlock(caller_session);
done:
switch_safe_free(mycmd);
@@ -1715,6 +1713,11 @@
char *reply, *freply = NULL;
switch_event_t *event;
char *arg;
+ switch_memory_pool_t *pool;
+
+ if (!job) return NULL;
+
+ pool = job->pool;
SWITCH_STANDARD_STREAM(stream);
@@ -1747,12 +1750,9 @@
switch_safe_free(stream.data);
switch_safe_free(freply);
- if (job) {
- switch_memory_pool_t *pool = job->pool;
- job = NULL;
- switch_core_destroy_memory_pool(&pool);
- pool = NULL;
- }
+ job = NULL;
+ switch_core_destroy_memory_pool(&pool);
+ pool = NULL;
return NULL;
}
@@ -2215,6 +2215,7 @@
switch_xml_free(xml);
} else {
stream->write_function(stream, "-ERR Unable to create xml!\n");
+ switch_event_destroy(&event);
switch_core_session_rwunlock(psession);
goto done;
}
@@ -2227,7 +2228,7 @@
switch_event_destroy(&event);
free(buf);
} else {
- abort();
+ stream->write_function(stream, "-ERR Allocation error\n");
}
switch_core_session_rwunlock(psession);
More information about the Freeswitch-svn
mailing list