iliaa           Wed May 12 16:17:21 2004 EDT

  Modified files:              (Branch: PHP_4_3)
    /php-src/ext/imap   php_imap.c 
  Log:
  MFH: Fixed various possible memory leaks.
  
  
http://cvs.php.net/diff.php/php-src/ext/imap/php_imap.c?r1=1.142.2.22&r2=1.142.2.23&ty=u
Index: php-src/ext/imap/php_imap.c
diff -u php-src/ext/imap/php_imap.c:1.142.2.22 php-src/ext/imap/php_imap.c:1.142.2.23
--- php-src/ext/imap/php_imap.c:1.142.2.22      Wed Jan 14 19:36:09 2004
+++ php-src/ext/imap/php_imap.c Wed May 12 16:17:21 2004
@@ -26,7 +26,7 @@
    | PHP 4.0 updates:  Zeev Suraski <[EMAIL PROTECTED]>                       |
    +----------------------------------------------------------------------+
  */
-/* $Id: php_imap.c,v 1.142.2.22 2004/01/15 00:36:09 iliaa Exp $ */
+/* $Id: php_imap.c,v 1.142.2.23 2004/05/12 20:17:21 iliaa Exp $ */
 
 #define IMAP41
 
@@ -1314,7 +1314,7 @@
        }
        
        array_init(return_value);
-       delim = emalloc(2 * sizeof(char));
+       delim = safe_emalloc(2, sizeof(char), 0);
        cur=IMAPG(imap_folder_objects);
        while (cur != NIL) {
                MAKE_STD_ZVAL(mboxob);
@@ -1635,6 +1635,7 @@
        }
        
        array_init(return_value);
+       delim = safe_emalloc(2, sizeof(char), 0);
        cur=IMAPG(imap_sfolder_objects);
        while (cur != NIL) {
                MAKE_STD_ZVAL(mboxob);
@@ -3190,6 +3191,9 @@
                bufferLen += strlen(cc) + 6;
        }
 
+#define PHP_IMAP_CLEAN if (bufferTo) efree(bufferTo); if (bufferCc) efree(bufferCc); 
if (bufferBcc) efree(bufferBcc); if (bufferHeader) efree(bufferHeader);
+#define PHP_IMAP_BAD_DEST PHP_IMAP_CLEAN; efree(tempMailTo); return 
(BAD_MSG_DESTINATION);
+
        bufferHeader = (char *)emalloc(bufferLen);
        memset(bufferHeader, 0, bufferLen);
        if (to && *to) {
@@ -3202,9 +3206,9 @@
                addr = NULL;
                rfc822_parse_adrlist(&addr, tempMailTo, NULL);
                while (addr) {
-                       if (strcmp(addr->host, ERRHOST) == 0)
-                               return (BAD_MSG_DESTINATION);
-                       else {
+                       if (strcmp(addr->host, ERRHOST) == 0) {
+                               PHP_IMAP_BAD_DEST;
+                       } else {
                                offset += sprintf(bufferTo + offset, "[EMAIL 
PROTECTED],", addr->mailbox, addr->host);
                        }
                        addr = addr->next;
@@ -3225,9 +3229,9 @@
                addr = NULL;
                rfc822_parse_adrlist(&addr, tempMailTo, NULL);
                while (addr) {
-                       if (strcmp(addr->host, ERRHOST) == 0)
-                               return (BAD_MSG_DESTINATION);
-                       else {
+                       if (strcmp(addr->host, ERRHOST) == 0) {
+                               PHP_IMAP_BAD_DEST;
+                       } else {
                                offset += sprintf(bufferCc + offset, "[EMAIL 
PROTECTED],", addr->mailbox, addr->host);
                        }
                        addr = addr->next;
@@ -3245,9 +3249,9 @@
                addr = NULL;
                rfc822_parse_adrlist(&addr, tempMailTo, NULL);
                while (addr) {
-                       if (strcmp(addr->host, ERRHOST) == 0)
-                               return (BAD_MSG_DESTINATION);
-                       else {
+                       if (strcmp(addr->host, ERRHOST) == 0) {
+                               PHP_IMAP_BAD_DEST;
+                       } else {
                                offset += sprintf(bufferBcc + offset, "[EMAIL 
PROTECTED],", addr->mailbox, addr->host);
                        }
                        addr = addr->next;
@@ -3269,20 +3273,10 @@
                } else {
                        php_error(E_WARNING, "%s(): %s", 
get_active_function_name(TSRMLS_C), GetSMErrorText(tsm_err));
                }
+               PHP_IMAP_CLEAN;
                return 0;
        }
-       if (bufferTo) {
-               efree(bufferTo);
-       }
-       if (bufferCc) {
-               efree(bufferCc);
-       }
-       if (bufferBcc) {
-               efree(bufferBcc);
-       }
-       if (bufferHeader) {
-               efree(bufferHeader);
-       }
+       PHP_IMAP_CLEAN;
 #else
        if (!INI_STR("sendmail_path")) {
                return 0;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to