iliaa           Wed Feb 21 04:29:15 2007 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/soap   php_http.c 
  Log:
  
  Improve redirect validation
  
http://cvs.php.net/viewvc.cgi/php-src/ext/soap/php_http.c?r1=1.77.2.11.2.5&r2=1.77.2.11.2.6&diff_format=u
Index: php-src/ext/soap/php_http.c
diff -u php-src/ext/soap/php_http.c:1.77.2.11.2.5 
php-src/ext/soap/php_http.c:1.77.2.11.2.6
--- php-src/ext/soap/php_http.c:1.77.2.11.2.5   Mon Jan  1 09:36:06 2007
+++ php-src/ext/soap/php_http.c Wed Feb 21 04:29:15 2007
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: php_http.c,v 1.77.2.11.2.5 2007/01/01 09:36:06 sebastian Exp $ */
+/* $Id: php_http.c,v 1.77.2.11.2.6 2007/02/21 04:29:15 iliaa Exp $ */
 
 #include "php_soap.h"
 #include "ext/standard/base64.h"
@@ -910,19 +910,20 @@
                                efree(http_body);
                                efree(loc);
                                if (new_url->scheme == NULL && new_url->path != 
NULL) {
-                                       new_url->scheme = 
estrdup(phpurl->scheme);
-                                       new_url->host = estrdup(phpurl->host);
+                                       new_url->scheme = NULL;
+                                       new_url->host = phpurl->host ? 
estrdup(phpurl->host) : NULL;
                                        new_url->port = phpurl->port;
                                        if (new_url->path && new_url->path[0] 
!= '/') {
-                                               char *t = 
phpurl->path?phpurl->path:"/";
+                                               char *t = phpurl->path;
                                                char *p = strrchr(t, '/');
-                                               char *s = emalloc((p - t) + 
strlen(new_url->path) + 2);
-
-                                               strncpy(s, t, (p - t) + 1);
-                                               s[(p - t) + 1] = 0;
-                                               strcat(s, new_url->path);
-                                               efree(new_url->path);
-                                               new_url->path = s;
+                                               if (p) {
+                                                       char *s = emalloc((p - 
t) + strlen(new_url->path) + 2);
+                                                       strncpy(s, t, (p - t) + 
1);
+                                                       s[(p - t) + 1] = 0;
+                                                       strcat(s, 
new_url->path);
+                                                       efree(new_url->path);
+                                                       new_url->path = s;
+                                               }
                                        }
                                }
                                phpurl = new_url;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to