mirror of
https://github.com/php/php-src.git
synced 2025-08-20 09:24:05 +02:00
add trailing '\0' to stream hashes
This commit is contained in:
parent
3868c1533e
commit
902e6583d9
4 changed files with 19 additions and 16 deletions
|
@ -270,7 +270,7 @@ static php_stream_filter *user_filter_factory_create(const char *filtername,
|
||||||
|
|
||||||
/* determine the classname/class entry */
|
/* determine the classname/class entry */
|
||||||
if (FAILURE == zend_hash_find(BG(user_filter_map), (char*)filtername,
|
if (FAILURE == zend_hash_find(BG(user_filter_map), (char*)filtername,
|
||||||
strlen(filtername), (void**)&fdat)) {
|
strlen(filtername) + 1, (void**)&fdat)) {
|
||||||
char *period;
|
char *period;
|
||||||
|
|
||||||
/* Userspace Filters using ambiguous wildcards could cause problems.
|
/* Userspace Filters using ambiguous wildcards could cause problems.
|
||||||
|
@ -287,7 +287,7 @@ static php_stream_filter *user_filter_factory_create(const char *filtername,
|
||||||
while (period) {
|
while (period) {
|
||||||
*period = '\0';
|
*period = '\0';
|
||||||
strcat(wildcard, ".*");
|
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;
|
period = NULL;
|
||||||
} else {
|
} else {
|
||||||
*period = '\0';
|
*period = '\0';
|
||||||
|
@ -617,7 +617,7 @@ PHP_FUNCTION(stream_filter_register)
|
||||||
fdat->classname = ezstrndup(classname_type, classname, classname_len);
|
fdat->classname = ezstrndup(classname_type, classname, classname_len);
|
||||||
fdat->classname_len = classname_len;
|
fdat->classname_len = 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 &&
|
sizeof(*fdat) + classname_len, NULL) == SUCCESS &&
|
||||||
php_stream_filter_register_factory_volatile(filtername, &user_filter_factory TSRMLS_CC) == SUCCESS) {
|
php_stream_filter_register_factory_volatile(filtername, &user_filter_factory TSRMLS_CC) == SUCCESS) {
|
||||||
RETVAL_TRUE;
|
RETVAL_TRUE;
|
||||||
|
|
|
@ -1997,12 +1997,12 @@ PHPAPI int php_register_url_stream_wrapper(char *protocol, php_stream_wrapper *w
|
||||||
return FAILURE;
|
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)
|
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)
|
static void clone_wrapper_hash(TSRMLS_D)
|
||||||
|
@ -2027,7 +2027,7 @@ PHPAPI int php_register_url_stream_wrapper_volatile(char *protocol, php_stream_w
|
||||||
clone_wrapper_hash(TSRMLS_C);
|
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)
|
PHPAPI int php_unregister_url_stream_wrapper_volatile(char *protocol TSRMLS_DC)
|
||||||
|
@ -2036,7 +2036,7 @@ PHPAPI int php_unregister_url_stream_wrapper_volatile(char *protocol TSRMLS_DC)
|
||||||
clone_wrapper_hash(TSRMLS_C);
|
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);
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
|
@ -2070,10 +2070,10 @@ PHPAPI php_stream_wrapper *php_stream_locate_url_wrapper(const char *path, char
|
||||||
}
|
}
|
||||||
|
|
||||||
if (protocol) {
|
if (protocol) {
|
||||||
if (FAILURE == zend_hash_find(wrapper_hash, (char*)protocol, n, (void**)&wrapperpp)) {
|
char *tmp = estrndup(protocol, n);
|
||||||
char *tmp = estrndup(protocol, n);
|
if (FAILURE == zend_hash_find(wrapper_hash, (char*)tmp, n + 1, (void**)&wrapperpp)) {
|
||||||
php_strtolower(tmp, n);
|
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];
|
char wrapper_name[32];
|
||||||
|
|
||||||
if (n >= sizeof(wrapper_name)) {
|
if (n >= sizeof(wrapper_name)) {
|
||||||
|
@ -2086,8 +2086,8 @@ PHPAPI php_stream_wrapper *php_stream_locate_url_wrapper(const char *path, char
|
||||||
wrapperpp = NULL;
|
wrapperpp = NULL;
|
||||||
protocol = NULL;
|
protocol = NULL;
|
||||||
}
|
}
|
||||||
efree(tmp);
|
|
||||||
}
|
}
|
||||||
|
efree(tmp);
|
||||||
}
|
}
|
||||||
/* TODO: curl based streams probably support file:// properly */
|
/* TODO: curl based streams probably support file:// properly */
|
||||||
if (!protocol || !strncasecmp(protocol, "file", n)) {
|
if (!protocol || !strncasecmp(protocol, "file", n)) {
|
||||||
|
@ -2136,7 +2136,7 @@ PHPAPI php_stream_wrapper *php_stream_locate_url_wrapper(const char *path, char
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check again, the original check might have not known the protocol name */
|
/* 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;
|
return *wrapperpp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,12 +31,12 @@ PHPAPI HashTable *php_stream_xport_get_hash(void)
|
||||||
|
|
||||||
PHPAPI int php_stream_xport_register(char *protocol, php_stream_transport_factory factory TSRMLS_DC)
|
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)
|
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) \
|
#define ERR_REPORT(out_err, fmt, arg) \
|
||||||
|
@ -106,7 +106,8 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, long namelen, int
|
||||||
}
|
}
|
||||||
|
|
||||||
if (protocol) {
|
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, tmp, n + 1, (void**)&factory)) {
|
||||||
char wrapper_name[32];
|
char wrapper_name[32];
|
||||||
|
|
||||||
if (n >= sizeof(wrapper_name))
|
if (n >= sizeof(wrapper_name))
|
||||||
|
@ -116,8 +117,10 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, long namelen, int
|
||||||
ERR_REPORT(error_string, "Unable to find the socket transport \"%s\" - did you forget to enable it when you configured PHP?",
|
ERR_REPORT(error_string, "Unable to find the socket transport \"%s\" - did you forget to enable it when you configured PHP?",
|
||||||
wrapper_name);
|
wrapper_name);
|
||||||
|
|
||||||
|
efree(tmp);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
efree(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (factory == NULL) {
|
if (factory == NULL) {
|
||||||
|
|
|
@ -511,7 +511,7 @@ PHP_FUNCTION(stream_wrapper_restore)
|
||||||
RETURN_TRUE;
|
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);
|
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s:// never existed, nothing to restore", protocol);
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue