]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-8711 #resolve [fix a couple of possible memory leaks in mod_skinny packet reading...
authornneul on mst.edu <nneul@mst.edu>
Wed, 6 Jan 2016 16:54:47 +0000 (10:54 -0600)
committernneul on mst.edu <nneul@mst.edu>
Wed, 6 Jan 2016 16:54:47 +0000 (10:54 -0600)
src/mod/endpoints/mod_skinny/mod_skinny.c
src/mod/endpoints/mod_skinny/skinny_protocol.c

index 765702eefd7a47620740ecd355445ad077ec3fd7..ae4d9cd0a5b6ac2d0e6d518c4e46b9f17c5ec5f9 100644 (file)
@@ -1910,6 +1910,7 @@ static void *SWITCH_THREAD_FUNC listener_run(switch_thread_t *thread, void *obj)
        add_listener(listener);
 
        while (listener_is_ready(listener)) {
+               switch_safe_free(request);
                status = skinny_read_packet(listener, &request);
 
                if (status != SWITCH_STATUS_SUCCESS) {
@@ -1932,10 +1933,12 @@ static void *SWITCH_THREAD_FUNC listener_run(switch_thread_t *thread, void *obj)
                                default: 
                                        skinny_log_l_msg(listener, SWITCH_LOG_DEBUG, "Communication Error\n");
                        }
+                       switch_safe_free(request);
                        switch_clear_flag_locked(listener, LFLAG_RUNNING);
                        break;
                }
                if (!listener_is_ready(listener)) {
+                       switch_safe_free(request);
                        break;
                }
 
@@ -1944,13 +1947,14 @@ static void *SWITCH_THREAD_FUNC listener_run(switch_thread_t *thread, void *obj)
                }
 
                if (skinny_handle_request(listener, request) != SWITCH_STATUS_SUCCESS) {
-                       switch_clear_flag_locked(listener, LFLAG_RUNNING);
                        switch_safe_free(request);
+                       switch_clear_flag_locked(listener, LFLAG_RUNNING);
                        break;
                } else {
                        switch_safe_free(request);
                }
        }
+       switch_safe_free(request);
 
        remove_listener(listener);
 
index 1e1c5391500ce480c831f09cfe8cd2196817076a..d785f6c21e4793982c618765b652ad36cbbcdf58 100644 (file)
@@ -141,6 +141,7 @@ switch_status_t skinny_read_packet(listener_t *listener, skinny_message_t **req)
                }
 
                if (!listener_is_ready(listener)) {
+                       switch_safe_free(request);
                        break;
                }
                if (!switch_status_is_timeup(status) && !SWITCH_STATUS_IS_BREAK(status) && (status != SWITCH_STATUS_SUCCESS)) {