From b19e6669467a7faee7024e20794da511de8575e9 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Wed, 22 Dec 2004 17:27:39 +0000 Subject: [PATCH] Fixed bug #31142 (imap_mail_compose() fails to generate correct output). --- ext/imap/php_imap.c | 18 ++++------- ext/imap/tests/bug31142_1.phpt | 59 ++++++++++++++++++++++++++++++++++ ext/imap/tests/bug31142_2.phpt | 30 +++++++++++++++++ 3 files changed, 95 insertions(+), 12 deletions(-) create mode 100644 ext/imap/tests/bug31142_1.phpt create mode 100644 ext/imap/tests/bug31142_2.phpt diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index 05eabea324..a2c4e43923 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -3150,8 +3150,9 @@ PHP_FUNCTION(imap_mail_compose) /* for each part */ do { + t=tmp; /* build cookie */ - sprintf (t=tmp, "--%s%s", cookie, CRLF); + sprintf (t, "--%s%s", cookie, CRLF); /* append mini-header */ rfc822_write_body_header(&t, &part->body); @@ -3169,29 +3170,22 @@ PHP_FUNCTION(imap_mail_compose) bod=&part->body; tempstring=emalloc(strlen(bod->contents.text.data)+strlen(CRLF)+strlen(mystring)+1); - strcpy(tempstring, mystring); + sprintf(tempstring, "%s%s%s", mystring, bod->contents.text.data, CRLF); efree(mystring); mystring=tempstring; - sprintf(mystring, "%s%s%s", mystring, bod->contents.text.data, CRLF); - } while ((part = part->next)); /* until done */ /* output trailing cookie */ sprintf(tmp, "--%s--", cookie); tempstring=emalloc(strlen(tmp)+strlen(CRLF)+strlen(mystring)+1); - strcpy(tempstring, mystring); + sprintf(tempstring, "%s%s%s", mystring, tmp, CRLF); efree(mystring); mystring=tempstring; - sprintf(mystring, "%s%s%s", mystring, tmp, CRLF); - } else if (bod) { - - tempstring=emalloc(strlen(bod->contents.text.data)+strlen(CRLF)+strlen(mystring)+1); - strcpy(tempstring, mystring); + tempstring = emalloc(strlen(bod->contents.text.data)+strlen(CRLF)+strlen(mystring)+1); + sprintf(tempstring, "%s%s%s", mystring, bod->contents.text.data, CRLF); efree(mystring); mystring=tempstring; - sprintf(mystring, "%s%s%s", mystring, bod->contents.text.data, CRLF); - } else { efree(mystring); RETURN_FALSE; diff --git a/ext/imap/tests/bug31142_1.phpt b/ext/imap/tests/bug31142_1.phpt new file mode 100644 index 0000000000..154f4cf4cd --- /dev/null +++ b/ext/imap/tests/bug31142_1.phpt @@ -0,0 +1,59 @@ +--TEST-- +Bug #31142 test #1 (imap_mail_compose() generates incorrect output) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +From: joe@example.com +To: foo@example.com +cc: bar@example.com +MIME-Version: 1.0 +Content-Type: MULTIPART/mixed; BOUNDARY="%s" + +---%s +Content-Type: APPLICATION/octet-stream +Content-Transfer-Encoding: BASE64 +Content-Description: some file + +QUJD + +---%s +Content-Type: TEXT/plain; CHARSET=US-ASCII +Content-Description: description3 + +contents.data3 + + + +---%s-- \ No newline at end of file diff --git a/ext/imap/tests/bug31142_2.phpt b/ext/imap/tests/bug31142_2.phpt new file mode 100644 index 0000000000..2a81760a7b --- /dev/null +++ b/ext/imap/tests/bug31142_2.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #31142 test #2 (imap_mail_compose() generates incorrect output) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +From: host@domain.com +MIME-Version: 1.0 +Content-Type: TEXT/plain; CHARSET=iso-8859-2 +Content-Transfer-Encoding: QUOTED-PRINTABLE + +asn =C5=99kl \ No newline at end of file -- 2.50.1