iliaa Thu Jan 5 00:50:20 2006 UTC
Modified files: (Branch: PHP_4_4)
/php-src/ext/imap php_imap.c
/php-src NEWS
Log:
MFH: Fixed bug #35669 (imap_mail_compose() crashes with
multipart-multiboundary-email).
http://cvs.php.net/viewcvs.cgi/php-src/ext/imap/php_imap.c?r1=1.142.2.44.2.3&r2=1.142.2.44.2.4&diff_format=u
Index: php-src/ext/imap/php_imap.c
diff -u php-src/ext/imap/php_imap.c:1.142.2.44.2.3
php-src/ext/imap/php_imap.c:1.142.2.44.2.4
--- php-src/ext/imap/php_imap.c:1.142.2.44.2.3 Wed Jan 4 12:56:09 2006
+++ php-src/ext/imap/php_imap.c Thu Jan 5 00:50:19 2006
@@ -26,7 +26,7 @@
| PHP 4.0 updates: Zeev Suraski <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_imap.c,v 1.142.2.44.2.3 2006/01/04 12:56:09 edink Exp $ */
+/* $Id: php_imap.c,v 1.142.2.44.2.4 2006/01/05 00:50:19 iliaa Exp $ */
#define IMAP41
@@ -2784,9 +2784,10 @@
char *cookie = NIL;
ENVELOPE *env;
BODY *bod=NULL, *topbod=NULL;
- PART *mypart=NULL, *toppart=NULL, *part;
+ PART *mypart=NULL, *part;
PARAMETER *param, *disp_param = NULL, *custom_headers_param = NULL,
*tmp_param = NULL;
char tmp[8 * MAILTMPLEN], *mystring=NULL, *t=NULL, *tempstring=NULL;
+ int toppart = 0;
if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &envelope, &body)
== FAILURE) {
ZEND_WRONG_PARAM_COUNT();
@@ -2869,7 +2870,6 @@
php_error_docref(NULL TSRMLS_CC, E_WARNING, "body parameter
cannot be empty");
RETURN_FALSE;
}
- zend_hash_get_current_key(Z_ARRVAL_PP(body), &key, &ind, 0); /* FIXME:
is this necessary? we're not using key/ind */
if (Z_TYPE_PP(data) == IS_ARRAY) {
bod = mail_newbody();
@@ -2969,23 +2969,28 @@
zend_hash_move_forward(Z_ARRVAL_PP(body));
while (zend_hash_get_current_data(Z_ARRVAL_PP(body), (void **) &data)
== SUCCESS) {
- zend_hash_get_current_key(Z_ARRVAL_PP(body), &key, &ind, 0);
/* FIXME: Is this necessary? We're not using key/ind */
if (Z_TYPE_PP(data) == IS_ARRAY) {
+ short type = -1;
+ if (zend_hash_find(Z_ARRVAL_PP(data), "type",
sizeof("type"), (void **) &pvalue)== SUCCESS) {
+ convert_to_long_ex(pvalue);
+ type = (short) Z_LVAL_PP(pvalue);
+ }
+
if (!toppart) {
bod->nested.part = mail_newbody_part();
mypart = bod->nested.part;
- toppart = mypart;
- bod=&mypart->body;
+ toppart = 1;
} else {
- mypart->next = mail_newbody_part();
- mypart = mypart->next;
- bod = &mypart->body;
+ mypart->next = mail_newbody_part();
+ mypart = mypart->next;
}
- if (zend_hash_find(Z_ARRVAL_PP(data), "type",
sizeof("type"), (void **) &pvalue)== SUCCESS) {
- convert_to_long_ex(pvalue);
- bod->type = (short) Z_LVAL_PP(pvalue);
- }
+ bod = &mypart->body;
+
+ if (type != TYPEMULTIPART) {
+ bod->type = type;
+ }
+
if (zend_hash_find(Z_ARRVAL_PP(data), "encoding",
sizeof("encoding"), (void **) &pvalue)== SUCCESS) {
convert_to_long_ex(pvalue);
bod->encoding = (short) Z_LVAL_PP(pvalue);
@@ -3082,12 +3087,6 @@
goto done;
}
- if (bod && bod->type == TYPEMULTIPART && (!bod->nested.part ||
!bod->nested.part->next)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "cannot generate
multipart e-mail without components.");
- RETVAL_FALSE;
- goto done;
- }
-
rfc822_encode_body_7bit(env, topbod);
rfc822_header (tmp, env, topbod);
http://cvs.php.net/viewcvs.cgi/php-src/NEWS?r1=1.1247.2.920.2.104&r2=1.1247.2.920.2.105&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1247.2.920.2.104 php-src/NEWS:1.1247.2.920.2.105
--- php-src/NEWS:1.1247.2.920.2.104 Wed Dec 28 20:57:07 2005
+++ php-src/NEWS Thu Jan 5 00:50:20 2006
@@ -6,6 +6,8 @@
- Fixed bug #35817 (unpack() does not decode odd number of hexadecimal values).
(Ilia)
- Fixed bug #35735 ($EGREP not defined in configure). (Jani)
+- Fixed bug #35669 (imap_mail_compose() crashes with
+ multipart-multiboundary-email). (Ilia)
- Fixed bug #35655 (whitespace following end of heredoc is lost). (Ilia)
- Fixed bug #35646 (%{mod_php_memory_usage}n is not reset after exit).
(vovik at getart dot ru, Tony)
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php