diff options
Diffstat (limited to 'ext/phar/stream.c')
-rw-r--r-- | ext/phar/stream.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/ext/phar/stream.c b/ext/phar/stream.c index 3d9f14e4d4..e6c57a89ab 100644 --- a/ext/phar/stream.c +++ b/ext/phar/stream.c @@ -501,7 +501,8 @@ static int phar_wrapper_stat(php_stream_wrapper *wrapper, char *url, int flags, php_stream_statbuf *ssb, php_stream_context *context TSRMLS_DC) /* {{{ */ { php_url *resource = NULL; - char *internal_file, *key, *error; + phar_zstr key; + char *internal_file, *error, *str_key; uint keylen; ulong unused; phar_archive_data *phar; @@ -562,9 +563,10 @@ static int phar_wrapper_stat(php_stream_wrapper *wrapper, char *url, int flags, if (HASH_KEY_NON_EXISTANT != zend_hash_get_current_key_ex( &phar->manifest, &key, &keylen, &unused, 0, NULL)) { - if (keylen >= (uint)internal_file_len && 0 == memcmp(internal_file, key, internal_file_len)) { + PHAR_STR(key, str_key); + if (keylen >= (uint)internal_file_len && 0 == memcmp(internal_file, str_key, internal_file_len)) { /* directory found, all dirs have the same stat */ - if (key[internal_file_len] == '/') { + if (str_key[internal_file_len] == '/') { phar_dostat(phar, NULL, ssb, 1, phar->alias, phar->alias_len TSRMLS_CC); php_url_free(resource); return SUCCESS; @@ -577,7 +579,8 @@ static int phar_wrapper_stat(php_stream_wrapper *wrapper, char *url, int flags, } /* check for mounted directories */ if (phar->mounted_dirs.arBuckets && zend_hash_num_elements(&phar->mounted_dirs)) { - char *key; + phar_zstr key; + char *str_key; ulong unused; uint keylen; @@ -586,7 +589,8 @@ static int phar_wrapper_stat(php_stream_wrapper *wrapper, char *url, int flags, if (HASH_KEY_NON_EXISTANT == zend_hash_get_current_key_ex(&phar->mounted_dirs, &key, &keylen, &unused, 0, NULL)) { break; } - if ((int)keylen >= internal_file_len || strncmp(key, internal_file, keylen)) { + PHAR_STR(key, str_key); + if ((int)keylen >= internal_file_len || strncmp(str_key, internal_file, keylen)) { continue; } else { char *test; @@ -594,7 +598,7 @@ static int phar_wrapper_stat(php_stream_wrapper *wrapper, char *url, int flags, phar_entry_info *entry; php_stream_statbuf ssbi; - if (SUCCESS != zend_hash_find(&phar->manifest, key, keylen, (void **) &entry)) { + if (SUCCESS != zend_hash_find(&phar->manifest, str_key, keylen, (void **) &entry)) { goto free_resource; } if (!entry->tmp || !entry->is_mounted) { |