sniper Wed Jan 19 12:38:41 2005 EDT Modified files: (Branch: PHP_4_3) /php-src/win32 sendmail.c Log: MFH: - Fixed bug #28976 (use From: from headers if sendmail_from is empty) http://cvs.php.net/diff.php/php-src/win32/sendmail.c?r1=1.47.2.8&r2=1.47.2.9&ty=u Index: php-src/win32/sendmail.c diff -u php-src/win32/sendmail.c:1.47.2.8 php-src/win32/sendmail.c:1.47.2.9 --- php-src/win32/sendmail.c:1.47.2.8 Mon Sep 8 18:37:51 2003 +++ php-src/win32/sendmail.c Wed Jan 19 12:38:41 2005 @@ -17,7 +17,7 @@ * */ -/* $Id: sendmail.c,v 1.47.2.8 2003/09/08 22:37:51 iliaa Exp $ */ +/* $Id: sendmail.c,v 1.47.2.9 2005/01/19 17:38:41 sniper Exp $ */ #include "php.h" /*php specific */ #include <stdio.h> @@ -211,6 +211,7 @@ int ret; char *RPath = NULL; char *headers_lc = NULL; /* headers_lc is only created if we've a header at all */ + char *pos1 = NULL, *pos2 = NULL; TSRMLS_FETCH(); WinsockStarted = FALSE; @@ -250,9 +251,21 @@ /* Fall back to sendmail_from php.ini setting */ if (mailRPath && *mailRPath) { RPath = estrdup(mailRPath); - } - else if (INI_STR("sendmail_from")) { + } else if (INI_STR("sendmail_from")) { RPath = estrdup(INI_STR("sendmail_from")); + } else if ( headers_lc && + (pos1 = strstr(headers_lc, "from:")) && + ((pos1 == headers_lc) || (*(pos1-1) == '\n')) + ) { + /* Real offset is memaddress from the original headers + difference of + * string found in the lowercase headrs + 5 characters to jump over + * the from: */ + pos1 = headers + (pos1 - headers_lc) + 5; + if (NULL == (pos2 = strstr(pos1, "\r\n"))) { + RPath = estrndup(pos1, strlen(pos1)); + } else { + RPath = estrndup(pos1, pos2-pos1); + } } else { if (headers) { efree(headers);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php