Re: cvs: php4 /ext/standard http_fopen_wrapper.c
| From: | Andi Gutmans | Date: | Fri, 19 Oct 2001 15:19:29 +0000 |
| Subject: | Re: cvs: php4 /ext/standard http_fopen_wrapper.c | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-7862@lists.php.net to get a copy of this message | ||
Please use strlcpy() and strlcat() instead of strncpy() and strncat().
Andi
At 11:30 PM 10/15/2001 +0000, Edin Kadribasic wrote:
edink Mon Oct 15 19:30:42 2001 EDTModified files:/php4/ext/standard http_fopen_wrapper.cLog: Fixed bug #13083 in http_fopen_wrapper.c which is now able to handle non absolute redirects. Index: php4/ext/standard/http_fopen_wrapper.c diff -u php4/ext/standard/http_fopen_wrapper.c:1.17 php4/ext/standard/http_fopen_wrapper.c:1.18 --- php4/ext/standard/http_fopen_wrapper.c:1.17 Sun Sep 9 09:29:18 2001+++ php4/ext/standard/http_fopen_wrapper.c Mon Oct 15 19:30:40 2001@@ -17,7 +17,7 @@| Hartmut Holzgraefe <hholzgra@php.net> | +----------------------------------------------------------------------+*/ -/* $Id: http_fopen_wrapper.c,v 1.17 2001/09/09 13:29:18 derick Exp $ */ +/* $Id: http_fopen_wrapper.c,v 1.18 2001/10/15 23:30:40 edink Exp $ */ #include "php.h" #include "php_globals.h" @@ -271,11 +271,28 @@if (!reqok) { SOCK_FCLOSE(*socketd); *socketd = 0; - php_url_free(resource); if (location[0] != '\0') { zval **response_header_new, *entry, **entryp; + char new_path[512];- fp = php_fopen_url_wrap_http(location, mode, options, issock, socketd, opened_path TSRMLS_CC); + *new_path='\0'; + if (strlen(location)<8 || strncasecmp(location, "http://", 7)) { + strcpy(new_path, "http://"); + strncat(new_path, resource->host, sizeof(new_path)-strlen(new_path)-1); + if (resource->port != 80) { + snprintf(new_path+strlen(new_path), sizeof(new_path)-strlen(new_path)-1, ":%d", resource->port); + } + if (*location != '/') { + php_dirname(resource->path, strlen(resource->path)); + snprintf (new_path+strlen(new_path), sizeof(new_path)-strlen(new_path)-1, "%s/", resource->path); + } + strncat(new_path, location, sizeof(new_path)-strlen(new_path)-1); + } + else { + strncpy(new_path, location, sizeof(new_path)); + } + php_url_free(resource); + fp = php_fopen_url_wrap_http(new_path, mode, options, issock, socketd, opened_path TSRMLS_CC); if (zend_hash_find(EG(active_symbol_table), "http_response_header", sizeof("http_response_header"), (void **) &response_header_new) == SUCCESS) { entryp = &entry; MAKE_STD_ZVAL(entry);@@ -290,6 +307,7 @@} goto out; } else { + php_url_free(resource); fp = NULL; goto out; }-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: php-cvs-unsubscribe@lists.php.net For additional commands, e-mail: php-cvs-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net