Additional warning for mail()
| From: | Markus Fischer | Date: | Sat, 16 Mar 2002 02:15:07 +0000 |
| Subject: | Additional warning for mail() | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-81314@lists.php.net to get a copy of this message | ||
Hi,
If no one objects I'ld like to commit the following patch
which raises an extra warning message when using mail() on
unix systems and the shell required for popen() can't be
executed (tested on linux/freebsd).
- Markus
--
Please always Cc to me when replying to me on the lists.
GnuPG Key: http://guru.josefine.at/~mfischer/C2272BD0.asc
Index: ext/mbstring/mbstring.c =================================================================== RCS file: /repository/php4/ext/mbstring/mbstring.c,v retrieving revision 1.48 diff -u -r1.48 mbstring.c --- ext/mbstring/mbstring.c 28 Feb 2002 08:26:20 -0000 1.48 +++ ext/mbstring/mbstring.c 16 Mar 2002 02:08:18 -0000 @@ -2796,7 +2796,7 @@ extra_cmd = Z_STRVAL_PP(argv[4]); } - if (!err && php_mail(to, subject, message, headers, extra_cmd)){ + if (!err && php_mail(to, subject, message, headers, extra_cmd TSRMLS_CC)){ RETVAL_TRUE; } else { RETVAL_FALSE; Index: ext/standard/basic_functions.c =================================================================== RCS file: /repository/php4/ext/standard/basic_functions.c,v retrieving revision 1.447 diff -u -r1.447 basic_functions.c --- ext/standard/basic_functions.c 1 Mar 2002 03:05:49 -0000 1.447 +++ ext/standard/basic_functions.c 16 Mar 2002 02:08:20 -0000 @@ -1512,7 +1512,7 @@ { #if HAVE_SENDMAIL if (!php_mail - (opt, "PHP error_log message", message, headers, NULL)) { + (opt, "PHP error_log message", message, headers, NULL TSRMLS_CC)) { return FAILURE; } #else Index: ext/standard/mail.c =================================================================== RCS file: /repository/php4/ext/standard/mail.c,v retrieving revision 1.48 diff -u -r1.48 mail.c --- ext/standard/mail.c 28 Feb 2002 08:26:46 -0000 1.48 +++ ext/standard/mail.c 16 Mar 2002 02:08:20 -0000 @@ -96,7 +96,7 @@ if(extra_cmd) extra_cmd = php_escape_shell_arg(extra_cmd); - if (php_mail(to, subject, message, headers, extra_cmd)) { + if (php_mail(to, subject, message, headers, extra_cmd TSRMLS_CC)) { RETVAL_TRUE; } else { RETVAL_FALSE; @@ -108,7 +108,7 @@ /* {{{ php_mail */ -PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd) +PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd TSRMLS_DC) { #ifdef PHP_WIN32 int tsm_err; @@ -148,6 +148,13 @@ efree (sendmail_cmd); if (sendmail) { +#ifndef PHP_WIN32 + if (EACCES == errno) { + php_error(E_WARNING, "%s() permission denied; unable to execute shell to run mail delivery binary", + get_active_function_name(TSRMLS_C)); + return 0; + } +#endif fprintf(sendmail, "To: %s\n", to); fprintf(sendmail, "Subject: %s\n", subject); if (headers != NULL) { Index: ext/standard/php_mail.h =================================================================== RCS file: /repository/php4/ext/standard/php_mail.h,v retrieving revision 1.12 diff -u -r1.12 php_mail.h --- ext/standard/php_mail.h 28 Feb 2002 08:26:47 -0000 1.12 +++ ext/standard/php_mail.h 16 Mar 2002 02:08:20 -0000 @@ -26,7 +26,7 @@ PHP_FUNCTION(mail); PHP_FUNCTION(ezmlm_hash); PHP_MINFO_FUNCTION(mail); -PHPAPI extern int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd); +PHPAPI extern int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd TSRMLS_DC); #endif
Index: ext/mbstring/mbstring.c =================================================================== RCS file: /repository/php4/ext/mbstring/mbstring.c,v retrieving revision 1.48 diff -u -r1.48 mbstring.c --- ext/mbstring/mbstring.c 28 Feb 2002 08:26:20 -0000 1.48 +++ ext/mbstring/mbstring.c 16 Mar 2002 02:08:18 -0000 @@ -2796,7 +2796,7 @@ extra_cmd = Z_STRVAL_PP(argv[4]); } - if (!err && php_mail(to, subject, message, headers, extra_cmd)){ + if (!err && php_mail(to, subject, message, headers, extra_cmd TSRMLS_CC)){ RETVAL_TRUE; } else { RETVAL_FALSE; Index: ext/standard/basic_functions.c =================================================================== RCS file: /repository/php4/ext/standard/basic_functions.c,v retrieving revision 1.447 diff -u -r1.447 basic_functions.c --- ext/standard/basic_functions.c 1 Mar 2002 03:05:49 -0000 1.447 +++ ext/standard/basic_functions.c 16 Mar 2002 02:08:20 -0000 @@ -1512,7 +1512,7 @@ { #if HAVE_SENDMAIL if (!php_mail - (opt, "PHP error_log message", message, headers, NULL)) { + (opt, "PHP error_log message", message, headers, NULL TSRMLS_CC)) { return FAILURE; } #else Index: ext/standard/mail.c =================================================================== RCS file: /repository/php4/ext/standard/mail.c,v retrieving revision 1.48 diff -u -r1.48 mail.c --- ext/standard/mail.c 28 Feb 2002 08:26:46 -0000 1.48 +++ ext/standard/mail.c 16 Mar 2002 02:08:20 -0000 @@ -96,7 +96,7 @@ if(extra_cmd) extra_cmd = php_escape_shell_arg(extra_cmd); - if (php_mail(to, subject, message, headers, extra_cmd)) { + if (php_mail(to, subject, message, headers, extra_cmd TSRMLS_CC)) { RETVAL_TRUE; } else { RETVAL_FALSE; @@ -108,7 +108,7 @@ /* {{{ php_mail */ -PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd) +PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd TSRMLS_DC) { #ifdef PHP_WIN32 int tsm_err; @@ -148,6 +148,13 @@ efree (sendmail_cmd); if (sendmail) { +#ifndef PHP_WIN32 + if (EACCES == errno) { + php_error(E_WARNING, "%s() permission denied; unable to execute shell to run mail delivery binary", + get_active_function_name(TSRMLS_C)); + return 0; + } +#endif fprintf(sendmail, "To: %s\n", to); fprintf(sendmail, "Subject: %s\n", subject); if (headers != NULL) { Index: ext/standard/php_mail.h =================================================================== RCS file: /repository/php4/ext/standard/php_mail.h,v retrieving revision 1.12 diff -u -r1.12 php_mail.h --- ext/standard/php_mail.h 28 Feb 2002 08:26:47 -0000 1.12 +++ ext/standard/php_mail.h 16 Mar 2002 02:08:20 -0000 @@ -26,7 +26,7 @@ PHP_FUNCTION(mail); PHP_FUNCTION(ezmlm_hash); PHP_MINFO_FUNCTION(mail); -PHPAPI extern int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd); +PHPAPI extern int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd TSRMLS_DC); #endif