PHP_FUNCTION(mail)
{
char *to=NULL, *message=NULL, *headers=NULL, *headers_trimmed=NULL;
- char *subject=NULL, *extra_cmd=NULL;
+ char *subject=NULL;
+ zend_string *extra_cmd=NULL;
int to_len, message_len, headers_len = 0;
- int subject_len, extra_cmd_len = 0, i;
+ int subject_len, i;
char *force_extra_parameters = INI_STR("mail.force_extra_parameters");
char *to_r, *subject_r;
char *p, *e;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss|ss", &to, &to_len, &subject, &subject_len, &message, &message_len, &headers, &headers_len, &extra_cmd, &extra_cmd_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss|sS", &to, &to_len, &subject, &subject_len, &message, &message_len, &headers, &headers_len, &extra_cmd) == FAILURE) {
return;
}
headers_trimmed = php_trim(headers, headers_len, NULL, 0, NULL, 2 TSRMLS_CC);
}
if (extra_cmd) {
- MAIL_ASCIIZ_CHECK(extra_cmd, extra_cmd_len);
+ MAIL_ASCIIZ_CHECK(extra_cmd->val, extra_cmd->len);
}
if (to_len > 0) {
if (force_extra_parameters) {
extra_cmd = php_escape_shell_cmd(force_extra_parameters);
} else if (extra_cmd) {
- extra_cmd = php_escape_shell_cmd(extra_cmd);
+ extra_cmd = php_escape_shell_cmd(extra_cmd->val);
}
- if (php_mail(to_r, subject_r, message, headers_trimmed, extra_cmd TSRMLS_CC)) {
+ if (php_mail(to_r, subject_r, message, headers_trimmed, extra_cmd ? extra_cmd->val : NULL TSRMLS_CC)) {
RETVAL_TRUE;
} else {
RETVAL_FALSE;
}
if (extra_cmd) {
- efree (extra_cmd);
+ STR_RELEASE(extra_cmd);
}
if (to_r != to) {
efree(to_r);