iliaa           Wed May 12 16:17:19 2004 EDT

  Modified files:              
    /php-src/ext/imap   php_imap.c 
  Log:
  Fixed various possible memory leaks.
  
  
http://cvs.php.net/diff.php/php-src/ext/imap/php_imap.c?r1=1.182&r2=1.183&ty=u
Index: php-src/ext/imap/php_imap.c
diff -u php-src/ext/imap/php_imap.c:1.182 php-src/ext/imap/php_imap.c:1.183
--- php-src/ext/imap/php_imap.c:1.182   Wed Jan 14 19:35:04 2004
+++ php-src/ext/imap/php_imap.c Wed May 12 16:17:19 2004
@@ -26,7 +26,7 @@
    | PHP 4.0 updates:  Zeev Suraski <[EMAIL PROTECTED]>                       |
    +----------------------------------------------------------------------+
  */
-/* $Id: php_imap.c,v 1.182 2004/01/15 00:35:04 iliaa Exp $ */
+/* $Id: php_imap.c,v 1.183 2004/05/12 20:17:19 iliaa Exp $ */
 
 #define IMAP41
 
@@ -1666,9 +1666,7 @@
 
        convert_to_string_ex(ref);
        convert_to_string_ex(pat);
-       
-       delim = safe_emalloc(2, sizeof(char), 0);
-       
+
        /* set flag for new, improved array of objects list */
        IMAPG(folderlist_style) = FLIST_OBJECT;
        
@@ -1679,6 +1677,7 @@
        }
        
        array_init(return_value);
+       delim = safe_emalloc(2, sizeof(char), 0);
        cur=IMAPG(imap_sfolder_objects);
        while (cur != NIL) {
                MAKE_STD_ZVAL(mboxob);
@@ -3222,6 +3221,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) {
@@ -3234,9 +3236,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;
@@ -3257,9 +3259,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;
@@ -3277,9 +3279,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;
@@ -3301,20 +3303,10 @@
                } else {
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", 
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