From 3ae9127b465ca1596c2f42b4bd3ba8f6e819d1d9 Mon Sep 17 00:00:00 2001 From: Dan Kalowsky Date: Wed, 18 Sep 2002 11:57:17 +0000 Subject: [PATCH] Patch for Bug #19402 provided by Kevin Way (kevin.way@overtone.org) --- ext/imap/php_imap.c | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index 00633b1c70..cf09072f37 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -2854,7 +2854,24 @@ PHP_FUNCTION(imap_mail_compose) tmp_param->attribute = "CHARSET"; tmp_param->next = bod->parameter; bod->parameter = tmp_param; - } + } + if (zend_hash_find(Z_ARRVAL_PP(data), "type.parameters", sizeof("type.parameters"), (void **) &pvalue)== SUCCESS) { + if(Z_TYPE_PP(pvalue) == IS_ARRAY) { + disp_param = tmp_param = NULL; + while (zend_hash_get_current_data(Z_ARRVAL_PP(pvalue), (void **) &disp_data) == SUCCESS) { + disp_param = mail_newbody_parameter(); + zend_hash_get_current_key(Z_ARRVAL_PP(pvalue), &key, &ind, 0); + disp_param->attribute = key; + convert_to_string_ex(disp_data); + disp_param->value = (char *) fs_get(Z_STRLEN_PP(disp_data) + 1); + memcpy(disp_param->value, Z_STRVAL_PP(disp_data), Z_STRLEN_PP(disp_data) + 1); + zend_hash_move_forward(Z_ARRVAL_PP(pvalue)); + disp_param->next = tmp_param; + tmp_param = disp_param; + } + bod->parameter = disp_param; + } + } if (zend_hash_find(Z_ARRVAL_PP(data), "subtype", sizeof("subtype"), (void **) &pvalue)== SUCCESS) { convert_to_string_ex(pvalue); bod->subtype = cpystr(Z_STRVAL_PP(pvalue)); @@ -2941,6 +2958,23 @@ PHP_FUNCTION(imap_mail_compose) tmp_param->next = bod->parameter; bod->parameter = tmp_param; } + if (zend_hash_find(Z_ARRVAL_PP(data), "type.parameters", sizeof("type.parameters"), (void **) &pvalue)== SUCCESS) { + if(Z_TYPE_PP(pvalue) == IS_ARRAY) { + disp_param = tmp_param = NULL; + while (zend_hash_get_current_data(Z_ARRVAL_PP(pvalue), (void **) &disp_data) == SUCCESS) { + disp_param = mail_newbody_parameter(); + zend_hash_get_current_key(Z_ARRVAL_PP(pvalue), &key, &ind, 0); + disp_param->attribute = key; + convert_to_string_ex(disp_data); + disp_param->value = (char *) fs_get(Z_STRLEN_PP(disp_data) + 1); + memcpy(disp_param->value, Z_STRVAL_PP(disp_data), Z_STRLEN_PP(disp_data) + 1); + zend_hash_move_forward(Z_ARRVAL_PP(pvalue)); + disp_param->next = tmp_param; + tmp_param = disp_param; + } + bod->parameter = disp_param; + } + } if (zend_hash_find(Z_ARRVAL_PP(data), "subtype", sizeof("subtype"), (void **) &pvalue)== SUCCESS) { convert_to_string_ex(pvalue); bod->subtype = cpystr(Z_STRVAL_PP(pvalue)); -- 2.40.0