From 408a8dfeadf833fac7feba1dd9d5a171a7fd40a5 Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Wed, 27 Mar 2002 20:39:27 +0000 Subject: [PATCH] - MFH for multiple To: lines --- ext/mailparse/rfc2045.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/ext/mailparse/rfc2045.c b/ext/mailparse/rfc2045.c index 0cd002f2ac..8459ea4e58 100755 --- a/ext/mailparse/rfc2045.c +++ b/ext/mailparse/rfc2045.c @@ -758,7 +758,33 @@ static void do_header(struct rfc2045 *p) val++; while(isspace(*val)) val++; - add_assoc_string(p->headerhash, t, val, 1); + + if (strcmp(t, "to") == 0 || strcmp(t, "cc") == 0) { + /* join multiple To: or Cc: lines together, so that + * those addresses are not silently ignored by scripts + * that do not parse headers manually */ + zval **existing = NULL; + + if (SUCCESS == zend_hash_find(Z_ARRVAL_P(p->headerhash), t, strlen(t)+1, (void**)&existing)) { + int newlen; + char *newstr; + + newlen = strlen(val) + Z_STRLEN_PP(existing) + 3; + newstr = emalloc(newlen); + + strcpy(newstr, Z_STRVAL_PP(existing)); + strcat(newstr, ", "); + strcat(newstr, val); + + add_assoc_string(p->headerhash, t, newstr, 0); + + } else { + add_assoc_string(p->headerhash, t, val, 1); + } + } else { + add_assoc_string(p->headerhash, t, val, 1); + } + } if (strcmp(t, "mime-version") == 0) { -- 2.50.1