Просмотр исходного кода

ZF-11162 Zend_Http_Client::setUri mutates argument

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@24334 44c647ce-9c0f-0410-b52a-842ac1e357ba
ezimuel 14 лет назад
Родитель
Сommit
737b609cff
2 измененных файлов с 14 добавлено и 1 удалено
  1. 4 1
      library/Zend/Http/Client.php
  2. 10 0
      tests/Zend/Http/Client/StaticTest.php

+ 4 - 1
library/Zend/Http/Client.php

@@ -282,7 +282,10 @@ class Zend_Http_Client
      */
     public function setUri($uri)
     {
-        if (is_string($uri)) {
+        if ($uri instanceof Zend_Uri_Http) {
+            // clone the URI in order to keep the passed parameter constant
+            $uri = clone $uri;
+        } elseif (is_string($uri)) {
             $uri = Zend_Uri::factory($uri);
         }
 

+ 10 - 0
tests/Zend/Http/Client/StaticTest.php

@@ -707,6 +707,16 @@ RESPONSE
     }
 
     /**
+     * @group ZF-11162
+     */
+    function testClientDoesNotModifyPassedUri() {
+        $uri = Zend_Uri_Http::fromString('http://example.org/');
+        $orig = clone $uri;
+        $client = new Zend_Http_Client($uri);
+        $this->assertEquals((string)$orig, (string)$uri);
+    }
+    
+    /**
      * Data providers
      */