cvs: php4 /main rfc1867.c
| From: | Rasmus Lerdorf | Date: | Sun, 06 Aug 2000 06:40:28 +0000 |
| Subject: | cvs: php4 /main rfc1867.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-1056@lists.php.net to get a copy of this message | ||
rasmus Sat Aug 5 23:40:28 2000 EDT
Modified files:
/php4/main rfc1867.c
Log:
Support content-encoding headers in file upload mime parts
@- Support content-encoding headers in file upload MIME parts
@ (Ragnar Kjørstad)
Index: php4/main/rfc1867.c
diff -u php4/main/rfc1867.c:1.37 php4/main/rfc1867.c:1.38
--- php4/main/rfc1867.c:1.37 Sun Jul 30 04:22:18 2000
+++ php4/main/rfc1867.c Sat Aug 5 23:40:28 2000
@@ -15,7 +15,7 @@
| Authors: Rasmus Lerdorf <rasmus@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: rfc1867.c,v 1.37 2000/07/30 11:22:18 stas Exp $ */
+/* $Id: rfc1867.c,v 1.38 2000/08/06 06:40:28 rasmus Exp $ */
#include <stdio.h>
#include "php.h"
@@ -59,7 +59,7 @@
*/
static void php_mime_split(char *buf, int cnt, char *boundary, zval *array_ptr)
{
- char *ptr, *loc, *loc2, *s, *name, *filename, *u, *fn;
+ char *ptr, *loc, *loc2, *loc3, *s, *name, *filename, *u, *fn;
int len, state = 0, Done = 0, rem, urem;
int eolsize;
long bytes, max_file_size = 0;
@@ -111,7 +111,7 @@
if (rem < 31) {
SAFE_RETURN;
}
- php_error(E_WARNING, "File Upload Mime headers garbled [%c%c%c%c%c]", *ptr, *(ptr +
1), *(ptr + 2), *(ptr + 3), *(ptr + 4));
+ 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;
}
loc = memchr(ptr, '\n', rem);
@@ -120,7 +120,7 @@
name += 7;
s = memchr(name, '\"', loc - name);
if (!s) {
- php_error(E_WARNING, "File Upload Mime headers garbled [%c%c%c%c%c]", *name, *(name
+ 1), *(name + 2), *(name + 3), *(name + 4));
+ php_error(E_WARNING, "File Upload Mime headers garbled name: [%c%c%c%c%c]", *name,
*(name + 1), *(name + 2), *(name + 3), *(name + 4));
SAFE_RETURN;
}
if (namebuf) {
@@ -157,7 +157,7 @@
filename += 11;
s = memchr(filename, '\"', loc - filename);
if (!s) {
- php_error(E_WARNING, "File Upload Mime headers garbled [%c%c%c%c%c]", *filename,
*(filename + 1), *(filename + 2), *(filename + 3), *(filename + 4));
+ php_error(E_WARNING, "File Upload Mime headers garbled filename: [%c%c%c%c%c]",
*filename, *(filename + 1), *(filename + 2), *(filename + 3), *(filename + 4));
SAFE_RETURN;
}
if (filenamebuf) {
@@ -201,8 +201,18 @@
*(loc2 - 1) = '\0';
s = loc+15;
}
- rem -= 2;
- ptr += 2;
+ loc3=memchr(loc2+1, '\n', rem-1);
+ if (loc3==NULL) {
+ php_error(E_WARNING, "File Upload Mime headers garbled header3: [%c%c%c%c%c]",
*loc2, *(loc2 + 1), *(loc2 + 2), *(loc2 + 3), *(loc2 + 4));
+ SAFE_RETURN;
+ }
+ if (loc3 - loc2 > 2) { /* we have a third header */
+ rem -= (ptr-loc3)+3;
+ ptr = loc3+3;
+ } else {
+ rem -= (ptr-loc3)+1;
+ ptr = loc3+1;
+ }
}
/* Add $foo_type */