Browse Source

Merge pull request #4076 from rchavik/2.5-space-in-url

Fix: Blackholed request when POSTing to a URL with space
José Lorenzo Rodríguez 11 years ago
parent
commit
94b9bf807b
2 changed files with 15 additions and 1 deletions
  1. 1 1
      lib/Cake/Network/CakeRequest.php
  2. 14 0
      lib/Cake/Test/Case/Network/CakeRequestTest.php

+ 1 - 1
lib/Cake/Network/CakeRequest.php

@@ -207,7 +207,7 @@ class CakeRequest implements ArrayAccess {
 			$query = $_GET;
 		}
 
-		$unsetUrl = '/' . str_replace('.', '_', urldecode($this->url));
+		$unsetUrl = '/' . str_replace(array('.', ' '), '_', urldecode($this->url));
 		unset($query[$unsetUrl]);
 		unset($query[$this->base . $unsetUrl]);
 		if (strpos($this->url, '?') !== false) {

+ 14 - 0
lib/Cake/Test/Case/Network/CakeRequestTest.php

@@ -2145,6 +2145,20 @@ class CakeRequestTest extends CakeTestCase {
 	}
 
 /**
+ * Test the here() with space in URL
+ *
+ * @return void
+ */
+	public function testHereWithSpaceInUrl() {
+		Configure::write('App.base', '');
+		$_GET = array('/admin/settings/settings/prefix/Access_Control' => '');
+		$request = new CakeRequest('/admin/settings/settings/prefix/Access%20Control');
+
+		$result = $request->here();
+		$this->assertEquals('/admin/settings/settings/prefix/Access%20Control', $result);
+	}
+
+/**
  * Test the input() method.
  *
  * @return void