]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-12040: [mod_sofia] Fix potential leak if realloc fails.
authorAndrey Volk <andywolk@gmail.com>
Fri, 6 Sep 2019 14:01:55 +0000 (18:01 +0400)
committerAndrey Volk <andywolk@gmail.com>
Fri, 6 Sep 2019 14:01:55 +0000 (18:01 +0400)
src/mod/endpoints/mod_sofia/sofia.c

index 0b0b1b82a0441a89bf4e91a70f4223cf1ea81ea5..6e4727d51ce5227deea7e9c3ff6bde32f8894edb 100644 (file)
@@ -821,8 +821,13 @@ void sofia_handle_sip_i_notify(switch_core_session_t *session, int status,
                        while ((call_info = call_info->ci_next) != NULL) {
                                char *tmp = sip_header_as_string(nua_handle_home(nh), (void *) call_info);
                                size_t tmp_len = strlen(tmp);
-                               hold = realloc(hold, cur_len + tmp_len + 2);
-                               switch_assert(hold);
+                               char *tmp_hold = realloc(hold, cur_len + tmp_len + 2);
+                               if (!tmp_hold) {
+                                       /* Avoid leak if realloc failed */
+                                       free(hold);
+                               }
+                               switch_assert(tmp_hold);
+                               hold = tmp_hold;
                                strncpy(hold + cur_len, ",", 2);
                                strncpy(hold + cur_len + 1, tmp, tmp_len +1);
                                su_free(nua_handle_home(nh), tmp);