summaryrefslogtreecommitdiff
path: root/ext/standard/mail.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/mail.c')
-rw-r--r--ext/standard/mail.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/ext/standard/mail.c b/ext/standard/mail.c
index df95c60266..0585be99a7 100644
--- a/ext/standard/mail.c
+++ b/ext/standard/mail.c
@@ -201,21 +201,25 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char
/* make sure that sendmail_path contains a valid executable, failure to do
* would make PHP abruptly exit without a useful error message. */
{
- char *s=NULL, p;
+ char *s=NULL, *p;
if ((s = strchr(sendmail_path, ' '))) {
- p = *s;
- *s = '\0';
+ p = estrndup(sendmail_path, s - sendmail_path);
+ } else {
+ p = sendmail_path;
}
- if (access(sendmail_path, X_OK)) {
+ if (VCWD_ACCESS(p, X_OK)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Permission denied: unable to execute shell to run mail delivery binary '%s'", sendmail_path);
+ if (extra_cmd != NULL) {
+ efree(sendmail_cmd);
+ }
if (s) {
- *s = p;
+ efree(p);
}
return 0;
}
if (s) {
- *s = p;
+ efree(p);
}
}