Browse Source

Fix incorrect exception type when double slash paths are used.

Fixes #3838
mark_story 13 years ago
parent
commit
f8c6138ad7

+ 1 - 1
lib/Cake/Routing/Filter/AssetDispatcher.php

@@ -124,7 +124,7 @@ class AssetDispatcher extends DispatcherFilter {
 		}
 
 		$plugin = Inflector::camelize($parts[0]);
-		if (CakePlugin::loaded($plugin)) {
+		if ($plugin && CakePlugin::loaded($plugin)) {
 			unset($parts[0]);
 			$fileFragment = urldecode(implode(DS, $parts));
 			$pluginWebroot = CakePlugin::path($plugin) . 'webroot' . DS;

+ 17 - 0
lib/Cake/Test/Case/Routing/Filter/AssetDispatcherTest.php

@@ -121,4 +121,21 @@ class AssetDispatcherTest extends CakeTestCase {
 		$this->assertSame($response, $filter->beforeDispatch($event));
 		$this->assertEquals($time->format('D, j M Y H:i:s') . ' GMT', $response->modified());
 	}
+
+/**
+ * Test that no exceptions are thrown for //index.php type urls.
+ *
+ * @return void
+ */
+	public function test404OnDoubleSlash() {
+		$filter = new AssetDispatcher();
+
+		$response = $this->getMock('CakeResponse', array('_sendHeader'));
+		$request = new CakeRequest('//index.php');
+		$event = new CakeEvent('Dispatcher.beforeRequest', $this, compact('request', 'response'));
+
+		$this->assertNull($filter->beforeDispatch($event));
+		$this->assertFalse($event->isStopped());
+	}
+
 }