From 8155b72e2ab5cf71519fd4ad91f5898d66c16a0e Mon Sep 17 00:00:00 2001 From: Eduardo Trujillo Date: Mon, 27 Oct 2014 17:47:05 -0400 Subject: [PATCH 1/8] Temporal fix for the empty file error --- src/Illuminate/Http/Request.php | 11 +++++++++-- tests/Http/HttpRequestTest.php | 17 +++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Http/Request.php b/src/Illuminate/Http/Request.php index 0fd581aeb47c..c9c4a6c431cc 100755 --- a/src/Illuminate/Http/Request.php +++ b/src/Illuminate/Http/Request.php @@ -599,11 +599,18 @@ public static function createFromBase(SymfonyRequest $request) { if ($request instanceof static) return $request; - return (new static)->duplicate( + // Remove empty files which can cause exceptions if a file form is empty + $files = []; + foreach ($request->files->all() as $index => $file) { + if (null !== $file) $files[$index] = $file; + } + + + return (new static)->duplicate( $request->query->all(), $request->request->all(), $request->attributes->all(), - $request->cookies->all(), $request->files->all(), $request->server->all() + $request->cookies->all(), $files, $request->server->all() ); } diff --git a/tests/Http/HttpRequestTest.php b/tests/Http/HttpRequestTest.php index ba276c8f2ace..095d5a720295 100755 --- a/tests/Http/HttpRequestTest.php +++ b/tests/Http/HttpRequestTest.php @@ -348,6 +348,23 @@ public function testAllInputWithNumericKeysReturnsInputAfterReplace() $this->assertEquals(array(1 => 'A', 2 => 'B', 3 => 'C'), $request2->all()); } + public function testInputWithEmptyFilename() + { + $invalidFiles = [ + 'file' => [ + 'name' => null, + 'type' => null, + 'tmp_name' => null, + 'error' => 4, + 'size' => 0 + ] + ]; + + $baseRequest = \Symfony\Component\HttpFoundation\Request::create('/?boom=breeze', 'GET', array('foo' => array('bar' => 'baz')), array(), $invalidFiles); + + $request = Request::createFromBase($baseRequest); + } + public function testOldMethodCallsSession() { From e7a5d418405608b65bc075ee089b5212f6900c79 Mon Sep 17 00:00:00 2001 From: Eduardo Trujillo Date: Tue, 28 Oct 2014 12:13:00 -0400 Subject: [PATCH 2/8] Override Request::duplicate so that it handles cases where input files are null --- src/Illuminate/Http/Request.php | 35 +++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/src/Illuminate/Http/Request.php b/src/Illuminate/Http/Request.php index c9c4a6c431cc..7ba6362d25af 100755 --- a/src/Illuminate/Http/Request.php +++ b/src/Illuminate/Http/Request.php @@ -599,23 +599,38 @@ public static function createFromBase(SymfonyRequest $request) { if ($request instanceof static) return $request; - // Remove empty files which can cause exceptions if a file form is empty - $files = []; - foreach ($request->files->all() as $index => $file) { - if (null !== $file) $files[$index] = $file; - } - - return (new static)->duplicate( $request->query->all(), $request->request->all(), $request->attributes->all(), - $request->cookies->all(), $files, $request->server->all() + $request->cookies->all(), $request->files->all(), $request->server->all() ); } - /** - * Get the session associated with the request. + /** + * Clones a request and overrides some of its parameters. + * + * @param array $query + * @param array $request + * @param array $attributes + * @param array $cookies + * @param array $files + * @param array $server + * @return Request + */ + public function duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null) + { + if ($files != null) { + $files = array_filter($files, function ($file) { + return ($file != null); + }); + } + + return parent::duplicate($query, $request, $attributes, $cookies, $files, $server); + } + + /** + * Get the session associated with the request. * * @return \Illuminate\Session\Store * From b63ca6ef98d5908f89c8ade195d5a3f2af8e24a1 Mon Sep 17 00:00:00 2001 From: Eduardo Trujillo Date: Tue, 28 Oct 2014 12:40:31 -0400 Subject: [PATCH 3/8] Fix indentation --- src/Illuminate/Http/Request.php | 50 ++++++++++++++++----------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/Illuminate/Http/Request.php b/src/Illuminate/Http/Request.php index 7ba6362d25af..be4c56f9e2af 100755 --- a/src/Illuminate/Http/Request.php +++ b/src/Illuminate/Http/Request.php @@ -599,7 +599,7 @@ public static function createFromBase(SymfonyRequest $request) { if ($request instanceof static) return $request; - return (new static)->duplicate( + return (new static)->duplicate( $request->query->all(), $request->request->all(), $request->attributes->all(), @@ -607,30 +607,30 @@ public static function createFromBase(SymfonyRequest $request) ); } - /** - * Clones a request and overrides some of its parameters. - * - * @param array $query - * @param array $request - * @param array $attributes - * @param array $cookies - * @param array $files - * @param array $server - * @return Request - */ - public function duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null) - { - if ($files != null) { - $files = array_filter($files, function ($file) { - return ($file != null); - }); - } - - return parent::duplicate($query, $request, $attributes, $cookies, $files, $server); - } - - /** - * Get the session associated with the request. + /** + * Clones a request and overrides some of its parameters. + * + * @param array $query + * @param array $request + * @param array $attributes + * @param array $cookies + * @param array $files + * @param array $server + * @return Request + */ + public function duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null) + { + if ($files != null) { + $files = array_filter($files, function ($file) { + return ($file != null); + }); + } + + return parent::duplicate($query, $request, $attributes, $cookies, $files, $server); + } + + /** + * Get the session associated with the request. * * @return \Illuminate\Session\Store * From 53b5f6be33b235f3dec41a1041edc9247b97b486 Mon Sep 17 00:00:00 2001 From: Eduardo Trujillo Date: Tue, 28 Oct 2014 12:42:53 -0400 Subject: [PATCH 4/8] Change test to tabs --- tests/Http/HttpRequestTest.php | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tests/Http/HttpRequestTest.php b/tests/Http/HttpRequestTest.php index 095d5a720295..868a95e7b7b7 100755 --- a/tests/Http/HttpRequestTest.php +++ b/tests/Http/HttpRequestTest.php @@ -348,22 +348,22 @@ public function testAllInputWithNumericKeysReturnsInputAfterReplace() $this->assertEquals(array(1 => 'A', 2 => 'B', 3 => 'C'), $request2->all()); } - public function testInputWithEmptyFilename() - { - $invalidFiles = [ - 'file' => [ - 'name' => null, - 'type' => null, - 'tmp_name' => null, - 'error' => 4, - 'size' => 0 - ] - ]; - - $baseRequest = \Symfony\Component\HttpFoundation\Request::create('/?boom=breeze', 'GET', array('foo' => array('bar' => 'baz')), array(), $invalidFiles); - - $request = Request::createFromBase($baseRequest); - } + public function testInputWithEmptyFilename() + { + $invalidFiles = [ + 'file' => [ + 'name' => null, + 'type' => null, + 'tmp_name' => null, + 'error' => 4, + 'size' => 0 + ] + ]; + + $baseRequest = \Symfony\Component\HttpFoundation\Request::create('/?boom=breeze', 'GET', array('foo' => array('bar' => 'baz')), array(), $invalidFiles); + + $request = Request::createFromBase($baseRequest); + } public function testOldMethodCallsSession() From beaa9206d6cf919527a63eb5cf0ad81315531bfb Mon Sep 17 00:00:00 2001 From: Eduardo Trujillo Date: Tue, 28 Oct 2014 12:43:32 -0400 Subject: [PATCH 5/8] Remove extra line --- tests/Http/HttpRequestTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Http/HttpRequestTest.php b/tests/Http/HttpRequestTest.php index 868a95e7b7b7..b232e2a5e56e 100755 --- a/tests/Http/HttpRequestTest.php +++ b/tests/Http/HttpRequestTest.php @@ -365,7 +365,6 @@ public function testInputWithEmptyFilename() $request = Request::createFromBase($baseRequest); } - public function testOldMethodCallsSession() { $request = Request::create('/', 'GET'); From fa7af5b0528ff907de13d57266b90068fdfa914e Mon Sep 17 00:00:00 2001 From: Eduardo Trujillo Date: Tue, 28 Oct 2014 13:16:14 -0400 Subject: [PATCH 6/8] Format fixes --- src/Illuminate/Http/Request.php | 18 +++++++++--------- tests/Http/HttpRequestTest.php | 2 ++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/Illuminate/Http/Request.php b/src/Illuminate/Http/Request.php index be4c56f9e2af..2b16d96ae072 100755 --- a/src/Illuminate/Http/Request.php +++ b/src/Illuminate/Http/Request.php @@ -608,15 +608,15 @@ public static function createFromBase(SymfonyRequest $request) } /** - * Clones a request and overrides some of its parameters. - * - * @param array $query - * @param array $request - * @param array $attributes - * @param array $cookies - * @param array $files - * @param array $server - * @return Request + * Clone a request and overrides some of its parameters. + * + * @param array $query + * @param array $request + * @param array $attributes + * @param array $cookies + * @param array $files + * @param array $server + * @return \Illuminate\Http\Request */ public function duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null) { diff --git a/tests/Http/HttpRequestTest.php b/tests/Http/HttpRequestTest.php index b232e2a5e56e..980fab6c0ca2 100755 --- a/tests/Http/HttpRequestTest.php +++ b/tests/Http/HttpRequestTest.php @@ -348,6 +348,7 @@ public function testAllInputWithNumericKeysReturnsInputAfterReplace() $this->assertEquals(array(1 => 'A', 2 => 'B', 3 => 'C'), $request2->all()); } + public function testInputWithEmptyFilename() { $invalidFiles = [ @@ -365,6 +366,7 @@ public function testInputWithEmptyFilename() $request = Request::createFromBase($baseRequest); } + public function testOldMethodCallsSession() { $request = Request::create('/', 'GET'); From dd553b709c365f75afc07447b979579c6326e3ad Mon Sep 17 00:00:00 2001 From: Eduardo Trujillo Date: Wed, 29 Oct 2014 13:49:39 -0400 Subject: [PATCH 7/8] Simplify --- src/Illuminate/Http/Request.php | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/Illuminate/Http/Request.php b/src/Illuminate/Http/Request.php index 2b16d96ae072..766a6b97e9fb 100755 --- a/src/Illuminate/Http/Request.php +++ b/src/Illuminate/Http/Request.php @@ -608,23 +608,11 @@ public static function createFromBase(SymfonyRequest $request) } /** - * Clone a request and overrides some of its parameters. - * - * @param array $query - * @param array $request - * @param array $attributes - * @param array $cookies - * @param array $files - * @param array $server - * @return \Illuminate\Http\Request + * {@inheritdoc} */ public function duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null) { - if ($files != null) { - $files = array_filter($files, function ($file) { - return ($file != null); - }); - } + $files = array_filter((array) $files); return parent::duplicate($query, $request, $attributes, $cookies, $files, $server); } From 3d87a565dd36e1dbf2ecf90e8f8f4b82060f048d Mon Sep 17 00:00:00 2001 From: Eduardo Trujillo Date: Thu, 30 Oct 2014 16:31:18 -0400 Subject: [PATCH 8/8] Import class --- tests/Http/HttpRequestTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/Http/HttpRequestTest.php b/tests/Http/HttpRequestTest.php index 980fab6c0ca2..2c57a78d23f3 100755 --- a/tests/Http/HttpRequestTest.php +++ b/tests/Http/HttpRequestTest.php @@ -1,6 +1,7 @@ array('bar' => 'baz')), array(), $invalidFiles); + $baseRequest = SymfonyRequest::create('/?boom=breeze', 'GET', array('foo' => array('bar' => 'baz')), array(), $invalidFiles); $request = Request::createFromBase($baseRequest); }