]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
avoid operations on closed file handles in embedded languages
authorAnthony Minessale <anthony.minessale@gmail.com>
Mon, 23 Feb 2009 19:52:29 +0000 (19:52 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Mon, 23 Feb 2009 19:52:29 +0000 (19:52 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12255 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
src/switch_core_file.c
src/switch_cpp.cpp

index 9e4f03a2677f2985e43621da8d0ad54dae647d23..d2e9cebc11ca89d2ed22faf630a182d358549cda 100644 (file)
@@ -1190,6 +1190,10 @@ static switch_status_t js_stream_input_callback(switch_core_session_t *session,
        switch_file_handle_t *fh = cb_state->extra;
        struct js_session *jss = cb_state->session_state;
 
+       if (!switch_test_flag(fh, SWITCH_FILE_OPEN)) {
+               return SWITCH_STATUS_FALSE;
+       }
+
        if ((status = js_common_callback(session, input, itype, buf, buflen)) != SWITCH_STATUS_SUCCESS) {
                return status;
        }
index 659ed0ba4d80515b9a7690b53e535936f0622545..8cf75089cb7bc6af92ebf8dbf521de9f9f71248b 100644 (file)
@@ -332,6 +332,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_seek(switch_file_handle_t *fh,
        switch_assert(fh != NULL);
        switch_assert(fh->file_interface != NULL);
 
+       if (!switch_test_flag(fh, SWITCH_FILE_OPEN)) {
+               return SWITCH_STATUS_FALSE;
+       }
+
        if (!fh->file_interface->file_seek) {
                return SWITCH_STATUS_FALSE;
        }
@@ -349,6 +353,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_set_string(switch_file_handle_t
        switch_assert(fh != NULL);
        switch_assert(fh->file_interface != NULL);
 
+       if (!switch_test_flag(fh, SWITCH_FILE_OPEN)) {
+               return SWITCH_STATUS_FALSE;
+       }
+
        if (!fh->file_interface->file_set_string) {
                return SWITCH_STATUS_FALSE;
        }
@@ -361,6 +369,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_get_string(switch_file_handle_t
        switch_assert(fh != NULL);
        switch_assert(fh->file_interface != NULL);
 
+       if (!switch_test_flag(fh, SWITCH_FILE_OPEN)) {
+               return SWITCH_STATUS_FALSE;
+       }
+
        if (!fh->file_interface->file_get_string) {
                return SWITCH_STATUS_FALSE;
        }
index b269f6b966b38ee9e3cc8c7b0a133e47da8ac353..f56eb1ef6f0820c5f8cce1f4d850bb7b6b389da1 100644 (file)
@@ -1207,6 +1207,10 @@ SWITCH_DECLARE(switch_status_t) CoreSession::process_callback_result(char *resul
     }
 
        if (fhp) {
+               if (!switch_test_flag(fhp, SWITCH_FILE_OPEN)) {
+                       return SWITCH_STATUS_FALSE;
+               }
+
                if (!strncasecmp(result, "speed", 5)) {
                        char *p;