mirror of
https://github.com/php/php-src.git
synced 2024-11-23 18:04:36 +08:00
- Fixed bug #28976 (use From: from headers if sendmail_from is empty)
This commit is contained in:
parent
6faa433d58
commit
9feb47d70e
@ -225,6 +225,7 @@ PHPAPI int TSendMail(char *host, int *error, char **error_message,
|
||||
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();
|
||||
|
||||
#ifndef NETWARE
|
||||
@ -266,9 +267,21 @@ PHPAPI int TSendMail(char *host, int *error, char **error_message,
|
||||
/* 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);
|
||||
|
Loading…
Reference in New Issue
Block a user