mirror of
https://github.com/php/php-src.git
synced 2026-03-27 17:52:16 +01:00
Prevent abrupt script execution when sendmail_path contains invalid
executable. Add more detail to the warnings regarding execution of sendmail binary.
This commit is contained in:
@@ -198,6 +198,13 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char
|
||||
#ifdef PHP_WIN32
|
||||
sendmail = popen(sendmail_cmd, "wb");
|
||||
#else
|
||||
/* make sure that sendmail_path contains a valid executable, failure to do
|
||||
* would make PHP abruptly exit without a useful error message. */
|
||||
if (access(sendmail_path, X_OK)) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Permission denied: unable to execute shell to run mail delivery binary '%s'", sendmail_path);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Since popen() doesn't indicate if the internal fork() doesn't work
|
||||
* (e.g. the shell can't be executed) we explicitely set it to 0 to be
|
||||
* sure we don't catch any older errno value. */
|
||||
@@ -210,7 +217,7 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char
|
||||
if (sendmail) {
|
||||
#ifndef PHP_WIN32
|
||||
if (EACCES == errno) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Permission denied: unable to execute shell to run mail delivery binary");
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Permission denied: unable to execute shell to run mail delivery binary '%s'", sendmail_path);
|
||||
pclose(sendmail);
|
||||
return 0;
|
||||
}
|
||||
@@ -239,7 +246,7 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not execute mail delivery program");
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not execute mail delivery program '%s'", sendmail_path);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user