]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
let's make sure realloc works
authorAnthony Minessale <anthony.minessale@gmail.com>
Sat, 11 Nov 2006 19:40:41 +0000 (19:40 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Sat, 11 Nov 2006 19:40:41 +0000 (19:40 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3316 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_event.c

index 278230b62bc44cb0f611170af220c23fb5c85f82..fdc1a9eb3dbd6f238ea6a8d1942bab23d454f5d4 100644 (file)
@@ -615,8 +615,14 @@ SWITCH_DECLARE(switch_status_t) switch_event_serialize(switch_event_t *event, ch
                llen = strlen(hp->name) + strlen(hp->value) + 2;
                
                if ((len + llen) > dlen) {
+                       char *m;
                        dlen += (blocksize + (len + llen));
-                       buf = realloc(buf, dlen);
+                       if ((m = realloc(buf, dlen))) {
+                               buf = m;
+                       } else {
+                               switch_safe_free(buf);
+                               return SWITCH_STATUS_MEMERR;
+                       }
                }
 
                snprintf(buf + len, dlen - len, "%s: %s\n", hp->name, hp->value);
@@ -634,10 +640,16 @@ SWITCH_DECLARE(switch_status_t) switch_event_serialize(switch_event_t *event, ch
                }
                
                if ((len + llen) > dlen) {
+                       char *m;
                        dlen += (blocksize + (len + llen));
-                       buf = realloc(buf, dlen);
+                       if ((m = realloc(buf, dlen))) {
+                               buf = m;
+                       } else {
+                               switch_safe_free(buf);
+                               return SWITCH_STATUS_MEMERR;
+                       }
                }
-
+               
                if (blen) {
                        snprintf(buf + len, dlen - len, "Content-Length: %d\n\n%s", blen, event->body);
                } else {