]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-8167 [mod_lua] Fixed a segfault caused by using api:execute or session:execute...
authorAnthony Minessale <anthm@freeswitch.org>
Wed, 16 Sep 2015 03:35:29 +0000 (22:35 -0500)
committerMichael Jerris <mike@jerris.com>
Mon, 21 Sep 2015 22:46:13 +0000 (17:46 -0500)
src/switch_cpp.cpp

index 0404ba01aa6a9f8055fc83804387f6a88106b4c3..f861b80908c1722d6f64c001be18fd78d3de0397 100644 (file)
@@ -234,8 +234,16 @@ SWITCH_DECLARE(const char *) API::execute(const char *cmd, const char *arg)
 {
        switch_stream_handle_t stream = { 0 };
        this_check("");
+
        SWITCH_STANDARD_STREAM(stream);
-       switch_api_execute(cmd, arg, session, &stream);
+
+       if (zstr(cmd)) {
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "No application specified\n");
+               stream.write_function(&stream, "-ERR No application specified");
+       } else {
+               switch_api_execute(cmd, arg, session, &stream);
+       }
+
        return (char *) stream.data;
 }
 
@@ -730,6 +738,11 @@ SWITCH_DECLARE(void) CoreSession::execute(const char *app, const char *data)
        this_check_void();
        sanity_check_noreturn;
 
+       if (zstr(app)) {
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "No application specified\n");
+               return;
+       } 
+
        begin_allow_threads();
        switch_core_session_execute_application(session, app, data);
        end_allow_threads();