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