tony2001 Mon Jan 15 17:07:08 2007 UTC
Modified files: (Branch: PHP_5_2)
/php-src/main/streams userspace.c transports.c streams.c filter.c
/php-src/ext/standard user_filters.c
Log:
MFH: add trailing '\0' to stream hashes
http://cvs.php.net/viewvc.cgi/php-src/main/streams/userspace.c?r1=1.31.2.3.2.2&r2=1.31.2.3.2.3&diff_format=u
Index: php-src/main/streams/userspace.c
diff -u php-src/main/streams/userspace.c:1.31.2.3.2.2
php-src/main/streams/userspace.c:1.31.2.3.2.3
--- php-src/main/streams/userspace.c:1.31.2.3.2.2 Mon Jan 1 09:36:12 2007
+++ php-src/main/streams/userspace.c Mon Jan 15 17:07:07 2007
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: userspace.c,v 1.31.2.3.2.2 2007/01/01 09:36:12 sebastian Exp $ */
+/* $Id: userspace.c,v 1.31.2.3.2.3 2007/01/15 17:07:07 tony2001 Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -455,7 +455,7 @@
RETURN_TRUE;
} else {
/* We failed. But why? */
- if
(zend_hash_exists(php_stream_get_url_stream_wrappers_hash(), protocol,
protocol_len)) {
+ if
(zend_hash_exists(php_stream_get_url_stream_wrappers_hash(), protocol,
protocol_len + 1)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING,
"Protocol %s:// is already defined.", protocol);
} else {
/* Should never happen */
@@ -511,7 +511,7 @@
RETURN_TRUE;
}
- if ((zend_hash_find(global_wrapper_hash, protocol, protocol_len,
(void**)&wrapperpp) == FAILURE) || !wrapperpp) {
+ if ((zend_hash_find(global_wrapper_hash, protocol, protocol_len + 1,
(void**)&wrapperpp) == FAILURE) || !wrapperpp) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s:// never
existed, nothing to restore", protocol);
RETURN_FALSE;
}
http://cvs.php.net/viewvc.cgi/php-src/main/streams/transports.c?r1=1.16.2.1.2.2&r2=1.16.2.1.2.3&diff_format=u
Index: php-src/main/streams/transports.c
diff -u php-src/main/streams/transports.c:1.16.2.1.2.2
php-src/main/streams/transports.c:1.16.2.1.2.3
--- php-src/main/streams/transports.c:1.16.2.1.2.2 Mon Jan 1 09:36:12 2007
+++ php-src/main/streams/transports.c Mon Jan 15 17:07:07 2007
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: transports.c,v 1.16.2.1.2.2 2007/01/01 09:36:12 sebastian Exp $ */
+/* $Id: transports.c,v 1.16.2.1.2.3 2007/01/15 17:07:07 tony2001 Exp $ */
#include "php.h"
#include "php_streams_int.h"
@@ -31,12 +31,12 @@
PHPAPI int php_stream_xport_register(char *protocol,
php_stream_transport_factory factory TSRMLS_DC)
{
- return zend_hash_update(&xport_hash, protocol, strlen(protocol),
&factory, sizeof(factory), NULL);
+ return zend_hash_update(&xport_hash, protocol, strlen(protocol) + 1,
&factory, sizeof(factory), NULL);
}
PHPAPI int php_stream_xport_unregister(char *protocol TSRMLS_DC)
{
- return zend_hash_del(&xport_hash, protocol, strlen(protocol));
+ return zend_hash_del(&xport_hash, protocol, strlen(protocol) + 1);
}
#define ERR_REPORT(out_err, fmt, arg) \
@@ -106,7 +106,8 @@
}
if (protocol) {
- if (FAILURE == zend_hash_find(&xport_hash, (char*)protocol, n,
(void**)&factory)) {
+ char *tmp = estrndup(protocol, n);
+ if (FAILURE == zend_hash_find(&xport_hash, (char*)tmp, n + 1,
(void**)&factory)) {
char wrapper_name[32];
if (n >= sizeof(wrapper_name))
@@ -116,8 +117,10 @@
ERR_REPORT(error_string, "Unable to find the socket
transport \"%s\" - did you forget to enable it when you configured PHP?",
wrapper_name);
+ efree(tmp);
return NULL;
}
+ efree(tmp);
}
if (factory == NULL) {
http://cvs.php.net/viewvc.cgi/php-src/main/streams/streams.c?r1=1.82.2.6.2.9&r2=1.82.2.6.2.10&diff_format=u
Index: php-src/main/streams/streams.c
diff -u php-src/main/streams/streams.c:1.82.2.6.2.9
php-src/main/streams/streams.c:1.82.2.6.2.10
--- php-src/main/streams/streams.c:1.82.2.6.2.9 Mon Jan 1 09:36:12 2007
+++ php-src/main/streams/streams.c Mon Jan 15 17:07:07 2007
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streams.c,v 1.82.2.6.2.9 2007/01/01 09:36:12 sebastian Exp $ */
+/* $Id: streams.c,v 1.82.2.6.2.10 2007/01/15 17:07:07 tony2001 Exp $ */
#define _GNU_SOURCE
#include "php.h"
@@ -1449,12 +1449,12 @@
return FAILURE;
}
- return zend_hash_add(&url_stream_wrappers_hash, protocol, protocol_len,
&wrapper, sizeof(wrapper), NULL);
+ return zend_hash_add(&url_stream_wrappers_hash, protocol, protocol_len
+ 1, &wrapper, sizeof(wrapper), NULL);
}
PHPAPI int php_unregister_url_stream_wrapper(char *protocol TSRMLS_DC)
{
- return zend_hash_del(&url_stream_wrappers_hash, protocol,
strlen(protocol));
+ return zend_hash_del(&url_stream_wrappers_hash, protocol,
strlen(protocol) + 1);
}
static void clone_wrapper_hash(TSRMLS_D)
@@ -1479,7 +1479,7 @@
clone_wrapper_hash(TSRMLS_C);
}
- return zend_hash_add(FG(stream_wrappers), protocol, protocol_len,
&wrapper, sizeof(wrapper), NULL);
+ return zend_hash_add(FG(stream_wrappers), protocol, protocol_len + 1,
&wrapper, sizeof(wrapper), NULL);
}
PHPAPI int php_unregister_url_stream_wrapper_volatile(char *protocol TSRMLS_DC)
@@ -1488,7 +1488,7 @@
clone_wrapper_hash(TSRMLS_C);
}
- return zend_hash_del(FG(stream_wrappers), protocol, strlen(protocol));
+ return zend_hash_del(FG(stream_wrappers), protocol, strlen(protocol) +
1);
}
/* }}} */
@@ -1521,11 +1521,11 @@
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Use of \"zlib:\"
wrapper is deprecated; please use \"compress.zlib://\" instead.");
}
- if (protocol) {
- if (FAILURE == zend_hash_find(wrapper_hash, (char*)protocol, n,
(void**)&wrapperpp)) {
- char *tmp = estrndup(protocol, n);
+ if (protocol) {
+ char *tmp = estrndup(protocol, n);
+ if (FAILURE == zend_hash_find(wrapper_hash, (char*)tmp, n + 1,
(void**)&wrapperpp)) {
php_strtolower(tmp, n);
- if (FAILURE == zend_hash_find(wrapper_hash, (char*)tmp,
n, (void**)&wrapperpp)) {
+ if (FAILURE == zend_hash_find(wrapper_hash, (char*)tmp,
n + 1, (void**)&wrapperpp)) {
char wrapper_name[32];
if (n >= sizeof(wrapper_name)) {
@@ -1538,8 +1538,8 @@
wrapperpp = NULL;
protocol = NULL;
}
- efree(tmp);
}
+ efree(tmp);
}
/* TODO: curl based streams probably support file:// properly */
if (!protocol || !strncasecmp(protocol, "file", n)) {
@@ -1588,7 +1588,7 @@
}
/* Check again, the original check might have not known
the protocol name */
- if (zend_hash_find(wrapper_hash, "file",
sizeof("file")-1, (void**)&wrapperpp) == SUCCESS) {
+ if (zend_hash_find(wrapper_hash, "file",
sizeof("file"), (void**)&wrapperpp) == SUCCESS) {
return *wrapperpp;
}
http://cvs.php.net/viewvc.cgi/php-src/main/streams/filter.c?r1=1.17.2.3.2.8&r2=1.17.2.3.2.9&diff_format=u
Index: php-src/main/streams/filter.c
diff -u php-src/main/streams/filter.c:1.17.2.3.2.8
php-src/main/streams/filter.c:1.17.2.3.2.9
--- php-src/main/streams/filter.c:1.17.2.3.2.8 Mon Jan 15 16:03:42 2007
+++ php-src/main/streams/filter.c Mon Jan 15 17:07:07 2007
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: filter.c,v 1.17.2.3.2.8 2007/01/15 16:03:42 tony2001 Exp $ */
+/* $Id: filter.c,v 1.17.2.3.2.9 2007/01/15 17:07:07 tony2001 Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -46,12 +46,12 @@
/* API for registering GLOBAL filters */
PHPAPI int php_stream_filter_register_factory(const char *filterpattern,
php_stream_filter_factory *factory TSRMLS_DC)
{
- return zend_hash_add(&stream_filters_hash, (char*)filterpattern,
strlen(filterpattern), factory, sizeof(*factory), NULL);
+ return zend_hash_add(&stream_filters_hash, (char*)filterpattern,
strlen(filterpattern) + 1, factory, sizeof(*factory), NULL);
}
PHPAPI int php_stream_filter_unregister_factory(const char *filterpattern
TSRMLS_DC)
{
- return zend_hash_del(&stream_filters_hash, (char*)filterpattern,
strlen(filterpattern));
+ return zend_hash_del(&stream_filters_hash, (char*)filterpattern,
strlen(filterpattern) + 1);
}
/* API for registering VOLATILE wrappers */
@@ -65,7 +65,7 @@
zend_hash_copy(FG(stream_filters), &stream_filters_hash, NULL,
&tmpfactory, sizeof(php_stream_filter_factory));
}
- return zend_hash_add(FG(stream_filters), (char*)filterpattern,
strlen(filterpattern), factory, sizeof(*factory), NULL);
+ return zend_hash_add(FG(stream_filters), (char*)filterpattern,
strlen(filterpattern) + 1, factory, sizeof(*factory), NULL);
}
/* Buckets */
@@ -259,7 +259,7 @@
n = strlen(filtername);
- if (SUCCESS == zend_hash_find(filter_hash, (char*)filtername, n,
(void**)&factory)) {
+ if (SUCCESS == zend_hash_find(filter_hash, (char*)filtername, n + 1,
(void**)&factory)) {
filter = factory->create_filter(filtername, filterparams,
persistent TSRMLS_CC);
} else if ((period = strrchr(filtername, '.'))) {
/* try a wildcard */
@@ -271,7 +271,7 @@
while (period && !filter) {
*period = '\0';
strcat(wildname, ".*");
- if (SUCCESS == zend_hash_find(filter_hash, wildname,
strlen(wildname), (void**)&factory)) {
+ if (SUCCESS == zend_hash_find(filter_hash, wildname,
strlen(wildname) + 1, (void**)&factory)) {
filter = factory->create_filter(filtername,
filterparams, persistent TSRMLS_CC);
}
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/user_filters.c?r1=1.31.2.4.2.3&r2=1.31.2.4.2.4&diff_format=u
Index: php-src/ext/standard/user_filters.c
diff -u php-src/ext/standard/user_filters.c:1.31.2.4.2.3
php-src/ext/standard/user_filters.c:1.31.2.4.2.4
--- php-src/ext/standard/user_filters.c:1.31.2.4.2.3 Mon Jan 1 09:36:09 2007
+++ php-src/ext/standard/user_filters.c Mon Jan 15 17:07:08 2007
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: user_filters.c,v 1.31.2.4.2.3 2007/01/01 09:36:09 sebastian Exp $ */
+/* $Id: user_filters.c,v 1.31.2.4.2.4 2007/01/15 17:07:08 tony2001 Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -266,7 +266,7 @@
/* determine the classname/class entry */
if (FAILURE == zend_hash_find(BG(user_filter_map), (char*)filtername,
- strlen(filtername), (void**)&fdat)) {
+ strlen(filtername) + 1, (void**)&fdat)) {
char *period;
/* Userspace Filters using ambiguous wildcards could cause
problems.
@@ -283,7 +283,7 @@
while (period) {
*period = '\0';
strcat(wildcard, ".*");
- if (SUCCESS ==
zend_hash_find(BG(user_filter_map), wildcard, strlen(wildcard), (void**)&fdat))
{
+ if (SUCCESS ==
zend_hash_find(BG(user_filter_map), wildcard, strlen(wildcard) + 1,
(void**)&fdat)) {
period = NULL;
} else {
*period = '\0';
@@ -567,7 +567,7 @@
fdat = ecalloc(1, sizeof(*fdat) + classname_len);
memcpy(fdat->classname, classname, classname_len);
- if (zend_hash_add(BG(user_filter_map), filtername, filtername_len,
(void*)fdat,
+ if (zend_hash_add(BG(user_filter_map), filtername, filtername_len + 1,
(void*)fdat,
sizeof(*fdat) + classname_len, NULL) == SUCCESS
&&
php_stream_filter_register_factory_volatile(filtername,
&user_filter_factory TSRMLS_CC) == SUCCESS) {
RETVAL_TRUE;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php