ID:               19307
 Comment by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
 Status:           Open
 Bug Type:         Mail related
 Operating System: FreeBSD
 PHP Version:      4.2.3
 New Comment:

I would really appreciate it if this patch could make it into the
official PHP distribution. It's not unusual to have safe_mode on and
insist that user have to change the Envelope-From when sending mail.


Previous Comments:
------------------------------------------------------------------------

[2002-09-10 04:54:21] [EMAIL PROTECTED]

I live now with this patch ...

--- ext/standard/mail.c.orig    Sat Aug 24 13:38:13 2002
+++ ext/standard/mail.c Tue Sep 10 11:19:33 2002
@@ -72,11 +72,6 @@
        char *to=NULL, *message=NULL, *headers=NULL, *subject=NULL,
*extra_cmd=NULL;
        int
to_len,message_len,headers_len,subject_len,extra_cmd_len,i;
        
-       if (PG(safe_mode) && (ZEND_NUM_ARGS() == 5)) {
-               php_error(E_WARNING, "%s(): SAFE MODE Restriction in
effect.  The fifth parameter is disabled in SAFE MODE.",
get_active_function_name(TSRMLS_C));
-               RETURN_FALSE;
-       }
-       
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss|ss",
                                                          &to,
&to_len,
                                                          &subject,
&subject_len,
@@ -111,6 +106,33 @@
                }
        }
 
+       if (PG(safe_mode) && (ZEND_NUM_ARGS() == 5)) {
+               if (extra_cmd > 0) {
+                       if (extra_cmd[0] != '-' || extra_cmd[1] != 'f')
{
+                               php_error(E_WARNING,
+                                   "%s(): SAFE MODE Restriction in
effect.  SAFE MODE does only allow -f as fifth parameter.",
+                                  
get_active_function_name(TSRMLS_C));
+                               RETURN_FALSE;
+                       }
+               }
+               for(;extra_cmd_len;extra_cmd_len--) {
+                       if(!isspace((unsigned
char)extra_cmd[extra_cmd_len-1]))break;
+                       to[extra_cmd_len-1]='\0';
+               }
+               for(i=2;extra_cmd[i];i++) {
+                       if (iscntrl((unsigned char)extra_cmd[i])) {
+                               php_error(E_WARNING,
+                                   "%s(): SAFE MODE Restriction in
effect. Forbidden control characters found in fifth parameter.",
+                                  
get_active_function_name(TSRMLS_C));
+                               RETURN_FALSE;
+                       }
+                       if (isspace((unsigned char)extra_cmd[i - 1]) &&
extra_cmd[i] == '-') {
+                               php_error(E_WARNING,
+                                   "%s(): SAFE MODE Restriction in
effect.  SAFE MODE does only allow -f and only one parameter.",
+                                  
get_active_function_name(TSRMLS_C));
+                       }
+               }
+       }
        if(extra_cmd)
                extra_cmd = php_escape_shell_arg(extra_cmd);

------------------------------------------------------------------------

[2002-09-09 06:48:55] [EMAIL PROTECTED]

In 4.2.3 the ASCII control char injection in the 5th parameter to
sendmail got fixed, that means it got disabled if a user is using the
securemode.

Of course this is a important thing to do, but we use the -f parameter
of
sendmail, so disable it completly is not an option.

mail($emailto, $titel, $text, "From: $emailfrom\nReply-To:
$emailfrom\nContent-Type: text/plain;
charset=iso-8859-1\nContent-Transfer-Encoding: 8bit", "-f$emailfrom");


So my question is if you could enable just -f mailadress, and verify if
it is a mail-
adress and reject all other things.

Martin

Martin Blapp, <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
------------------------------------------------------------------
ImproWare AG, UNIXSP & ISP, Zurlindenstrasse 29, 4133 Pratteln, CH
Phone: +41 061 826 93 00: +41 61 826 93 01
PGP: <finger -l [EMAIL PROTECTED]>
PGP Fingerprint: B434 53FC C87C FE7B 0A18 B84C 8686 EF22 D300 551E
------------------------------------------------------------------

------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=19307&edit=1

Reply via email to