ID:               15772
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
 Status:           Closed
 Bug Type:         *General Issues
 Operating System: all
 PHP Version:      4.0.6
 New Comment:

> Fuck you ...php

This posting is most probably a fake, cause there is
noone at [EMAIL PROTECTED]

And for the rest of the trolls:

The patch from [EMAIL PROTECTED] will not be applied.
All his claims were as bogus as his patch.
He just added lots of redundant code. And the best:
In his patch every single variable is double freed.
You know how dangerous that is...



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

[2002-03-02 15:56:21] [EMAIL PROTECTED]

Fuck you ...php

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

[2002-03-01 07:03:10] [EMAIL PROTECTED]

I have had a long look at rfc1867.c v 1.71.2.2 2002/02/21
from a download of php4.1.2 today (1 Mar 10:00 CET). There are a large
number of dubious cases of handling of the buffer being processed. The
following diffs address most of these (I believe). I am posting the
patches to the php-dev list, since it's difficult if not impossible to
create a properfly formatted diff in this edit window.

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

[2002-02-28 17:50:58] [EMAIL PROTECTED]

How about this patch:

--- main/rfc1867.c.orig Thu Feb 28 14:08:25 2002
+++ main/rfc1867.c      Thu Feb 28 14:33:03 2002
@@ -163,20 +163,28 @@
                                                SAFE_RETURN;
                                        }
                                        /* some other headerfield
found, skip it */
-                                       loc = (char *) memchr(ptr,
'\n', rem)+1;
+                                       loc = (char *) memchr(ptr,
'\n', rem);
                                        if (!loc) {
                                                /* broken */
                                                php_error(E_WARNING,
"File Upload Mime headers garbled ptr: [%c%c%c%c%c]", *ptr, *(ptr + 1),
*(ptr + 2), *(ptr
+ 3), *(ptr + 4));
                                                SAFE_RETURN;
                                        }
+                                       else
+                                       {
+                                           loc++;
+                                       }
                                        while (*loc == ' ' || *loc ==
'\t') {
                                                /* other field is
folded, skip it */
-                                               loc = (char *)
memchr(loc, '\n', rem-(loc-ptr))+1;
+                                               loc = (char *)
memchr(loc, '\n', rem-(loc-ptr));
                                                if (!loc) {
                                                        /* broken */
                                                       
php_error(E_WARNING, "File Upload Mime headers garbled ptr:
[%c%c%c%c%c]", *ptr, *(ptr + 1), *(ptr +
2), *(ptr + 3), *(ptr + 4));
                                                        SAFE_RETURN;
                                                }
+                                               else
+                                               {
+                                                   loc++;
+                                               }
                                        }
                                        rem -= (loc - ptr);
                                        ptr = loc;
@@ -232,6 +240,10 @@
                                         * pre 4.0.6 code here
                                         */
                                        loc2 = memchr(loc + 1, '\n',
rem);
+                                       if (!loc2) {
+                                               php_error(E_WARNING,
"File Upload Mime headers - no newline");
+                                               SAFE_RETURN;
+                                       }
                                        rem -= (loc2 - ptr) + 1;
                                        ptr = loc2 + 1;
                                        /* is_arr_upload is true when
name of file upload field

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

[2002-02-28 05:06:42] [EMAIL PROTECTED]

You are again wrong, cnt must be supplied.
I advise you to think before you speak.

A POST fileupload block can have lots of '\0's in it.
Without the number of bytes it would be impossibe to
handle such a block.


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

[2002-02-28 04:59:29] [EMAIL PROTECTED]

I'll admit that I did not examine the rest of the program to see if the
buffer was '\0'-terminated, however if it is, it's not just me that
thought it wasn't - whoever wrote the routine thought it wasn't either.
Otherwise there wouldn't even be any point in passing the buffer length
to the function, or the main loop's "while (ptr - buf < cnt)" or indeed
half the function.

As to providing patches, I know from experience that what you tend to
do with them is ignore them, insult them, re-write them badly and apply
them six months later, and then fail to credit. Plus I see no point in
providing band-aids in a futile attempt to cover the gaping wounds in
PHP. I *can* give you the fix I recommend to people for PHP, however,
which is 'rm -rf php-*' ;-)

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

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/15772

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

Reply via email to