]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7866: [core] fix crash when running incorrect var api expansion syntax "eval ...
authorMichael Jerris <mike@jerris.com>
Tue, 21 Jul 2015 17:23:21 +0000 (12:23 -0500)
committerMichael Jerris <mike@jerris.com>
Tue, 25 Aug 2015 19:46:51 +0000 (14:46 -0500)
src/switch_event.c

index 13ce7b1f8d9bff93c7869b0bad027d59613f3e4a..1ac6433bdec6322863ec1efd5adea04de7d88dce 100644 (file)
@@ -2365,25 +2365,26 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event,
                                                }
                                        }
 
-                                       if (offset || ooffset) {
-                                               cloned_sub_val = strdup(sub_val);
-                                               switch_assert(cloned_sub_val);
-                                               sub_val = cloned_sub_val;
-                                       }
+                                       if (sub_val) {
+                                               if (offset || ooffset) {
+                                                       cloned_sub_val = strdup(sub_val);
+                                                       switch_assert(cloned_sub_val);
+                                                       sub_val = cloned_sub_val;
+                                               }
 
-                                       if (offset >= 0) {
-                                               sub_val += offset;
-                                       } else if ((size_t) abs(offset) <= strlen(sub_val)) {
-                                               sub_val = cloned_sub_val + (strlen(cloned_sub_val) + offset);
-                                       }
+                                               if (offset >= 0) {
+                                                       sub_val += offset;
+                                               } else if ((size_t) abs(offset) <= strlen(sub_val)) {
+                                                       sub_val = cloned_sub_val + (strlen(cloned_sub_val) + offset);
+                                               }
 
-                                       if (ooffset > 0 && (size_t) ooffset < strlen(sub_val)) {
-                                               if ((ptr = (char *) sub_val + ooffset)) {
-                                                       *ptr = '\0';
+                                               if (ooffset > 0 && (size_t) ooffset < strlen(sub_val)) {
+                                                       if ((ptr = (char *) sub_val + ooffset)) {
+                                                               *ptr = '\0';
+                                                       }
                                                }
                                        }
 
-
                                        switch_safe_free(expanded);
                                } else {
                                        switch_stream_handle_t stream = { 0 };