LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File php5-big-file-upload.patch of Package php-5.5.27 (Project home:onzi)

From: Ralf Lang <lang@b1-systems.de>
Date: 2013-07-23 10:25:22 +0200
Subject: Allow large file uploads > 2G and prevent integer overflow for php.ini values > 2G
Upstream: submitted

Similarly to the previous php5-64-bit-post-large-files.patch, this adresses cases where php.ini configures upload limits > 2G
https://github.com/php/php-src/pull/372
https://bugs.php.net/bug.php?id=44522
This is essentially the same as the patch "uploads_larger_than_2g_HEAD_v2 (last revision 2012-03-26 03:59 UTC) byjason at infininull dot com)"
but using off_t instead of signed long(originally: uint)

---
 main/SAPI.h         |    4 ++--
 main/rfc1867.c      |    5 +++--
 sapi/cgi/cgi_main.c |    2 +-
 3 files changed, 6 insertions(+), 5 deletions(-)

Index: php-5.4.16/main/SAPI.h
===================================================================
--- php-5.4.16.orig/main/SAPI.h
+++ php-5.4.16/main/SAPI.h
@@ -82,7 +82,7 @@ typedef struct {
 	char *post_data, *raw_post_data;
 	char *cookie_data;
 	long content_length;
-	uint post_data_length, raw_post_data_length;
+	off_t post_data_length, raw_post_data_length;
 
 	char *path_translated;
 	char *request_uri;
@@ -119,7 +119,7 @@ typedef struct _sapi_globals_struct {
 	void *server_context;
 	sapi_request_info request_info;
 	sapi_headers_struct sapi_headers;
-	int read_post_bytes;
+	off_t read_post_bytes;
 	unsigned char headers_sent;
 	struct stat global_stat;
 	char *default_mimetype;
Index: php-5.4.16/main/rfc1867.c
===================================================================
--- php-5.4.16.orig/main/rfc1867.c
+++ php-5.4.16/main/rfc1867.c
@@ -676,8 +676,9 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_
 {
 	char *boundary, *s = NULL, *boundary_end = NULL, *start_arr = NULL, *array_index = NULL;
 	char *temp_filename = NULL, *lbuf = NULL, *abuf = NULL;
-	int boundary_len = 0, total_bytes = 0, cancel_upload = 0, is_arr_upload = 0, array_len = 0;
-	int max_file_size = 0, skip_upload = 0, anonindex = 0, is_anonymous;
+	int boundary_len = 0, cancel_upload = 0, is_arr_upload = 0, array_len = 0;
+	off_t total_bytes = 0, max_file_size = 0;
+	int skip_upload = 0, anonindex = 0, is_anonymous;
 	zval *http_post_files = NULL;
 	HashTable *uploaded_files = NULL;
 	multipart_buffer *mbuff;
Index: php-5.4.16/sapi/cgi/cgi_main.c
===================================================================
--- php-5.4.16.orig/sapi/cgi/cgi_main.c
+++ php-5.4.16/sapi/cgi/cgi_main.c
@@ -508,7 +508,7 @@ static int sapi_cgi_read_post(char *buff
 	uint read_bytes = 0;
 	int tmp_read_bytes;
 
-	count_bytes = MIN(count_bytes, (uint) SG(request_info).content_length - SG(read_post_bytes));
+	count_bytes = MIN(count_bytes, SG(request_info).content_length - SG(read_post_bytes));
 	while (read_bytes < count_bytes) {
 		tmp_read_bytes = read(STDIN_FILENO, buffer + read_bytes, count_bytes - read_bytes);
 		if (tmp_read_bytes <= 0) {