|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
Patch htscanner_php7.0.patch for htscanner Bug #72269Patch version 2016-05-31 20:14 UTC Return to Bug #72269 | Download this patchThis patch is obsolete Obsoleted by patches:
Developer: roel@abittechnical.com
diff --git a/htscanner.c b/htscanner.c
index 55bc68b..a79149d 100644
--- a/htscanner.c
+++ b/htscanner.c
@@ -147,18 +147,39 @@ static int value_hnd(char *name, char *value, int flag, int mode, HashTable *ini
#endif
#if PHP_VERSION_ID < 50204
if (zend_alter_ini_entry(name, name_len + 1, value, value_len, mode, PHP_INI_STAGE_RUNTIME) == FAILURE) {
-#else
+#elif PHP_VERSION_ID < 70000
if (zend_alter_ini_entry(name, name_len + 1, value, value_len, mode, PHP_INI_STAGE_HTACCESS) == FAILURE) {
+#else
+ zend_string *zname, *zvalue;
+ zname = zend_string_init(name, name_len, 0);
+ zvalue = zend_string_init(value, value_len, 0);
+ int res = zend_alter_ini_entry(zname, zvalue, mode, PHP_INI_STAGE_HTACCESS);
+ if (res == FAILURE) {
#endif
htscanner_debug("zend_alter_ini_entry failed!");
if (HTG(verbose)) {
zend_error(E_WARNING, "Adding option (Name: '%s' Value: '%s') (%lu, %lu) failed!\n", name, value, name_len, value_len);
}
+#if PHP_VERSION_ID >= 70000
+ zend_string_release(zname);
+ zend_string_release(zvalue);
+#endif
return FAILURE;
}
+#if PHP_VERSION_ID < 70000
if (ini_entries)
zend_hash_update(ini_entries, name, name_len + 1, value, value_len + 1, NULL);
+#else
+ zval zval_value;
+ ZVAL_STR(&zval_value, zvalue);
+
+ if (ini_entries)
+ zend_hash_update(ini_entries, zname, &zval_value);
+
+ zend_string_release(zname);
+ zend_string_release(zvalue);
+#endif
return SUCCESS;
}
@@ -186,7 +207,11 @@ static void parse_config_file(char *file, HashTable *ini_entries TSRMLS_DC)
}
#endif
+#if PHP_VERSION_ID < 70000
stream = php_stream_open_wrapper(file, "rb", IGNORE_URL | ENFORCE_SAFE_MODE, NULL);
+#else
+ stream = php_stream_open_wrapper(file, "rb", IGNORE_URL, NULL);
+#endif
if (stream != NULL) {
char buf[FILE_BUFFER], *bufp, *tok, *value;
int flag, parse = 1;
@@ -259,7 +284,7 @@ ZEND_GET_MODULE(htscanner)
PHP_INI_BEGIN()
STD_PHP_INI_ENTRY("htscanner.config_file", ".htaccess", PHP_INI_SYSTEM, OnUpdateString, config_file, zend_htscanner_globals, htscanner_globals)
STD_PHP_INI_ENTRY("htscanner.default_docroot", "/", PHP_INI_SYSTEM, OnUpdateString, default_docroot, zend_htscanner_globals, htscanner_globals)
-#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 0)
+#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 0) || PHP_MAJOR_VERSION >= 7
STD_PHP_INI_ENTRY("htscanner.default_ttl", "300", PHP_INI_SYSTEM, OnUpdateLong, default_ttl, zend_htscanner_globals, htscanner_globals)
STD_PHP_INI_ENTRY("htscanner.stop_on_error", "0", PHP_INI_SYSTEM, OnUpdateLong, stop_on_error, zend_htscanner_globals, htscanner_globals)
STD_PHP_INI_ENTRY("htscanner.verbose", "0", PHP_INI_SYSTEM, OnUpdateLong, verbose, zend_htscanner_globals, htscanner_globals)
@@ -346,32 +371,64 @@ static int htscanner_main(TSRMLS_D) /* {{{ */
t = sapi_get_request_time(TSRMLS_C);
#endif
+#if PHP_VERSION_ID >= 70000
+ zend_string *zcwd;
+ zcwd = zend_string_init(cwd, cwd_len, 0);
+#endif
+
htscannerMutexLock(ini_entries_cache_mutex);
+#if PHP_VERSION_ID < 70000
if (zend_hash_find(ini_entries_cache, cwd, cwd_len, (void**)&entry_fetched) == SUCCESS) {
+#else
+ zval *res = zend_hash_find(ini_entries_cache, zcwd);
+ if (res != NULL) {
+ entry_fetched = (void*)Z_STRVAL_P(res);
+#endif
/* fetch cache and assign */
if ((unsigned int)(t - entry_fetched->created_on) < HTG(default_ttl)) {
+#if PHP_VERSION_ID < 70000
char *value, *name;
- HashPosition pos;
uint len;
+#else
+ zend_string *name;
+ zval *value;
+#endif
+ HashPosition pos;
ulong num;
zend_hash_internal_pointer_reset_ex(entry_fetched->ini_entries, &pos);
+#if PHP_VERSION_ID < 70000
while (SUCCESS == zend_hash_get_current_data_ex(entry_fetched->ini_entries, (void**)&value, &pos)) {
zend_hash_get_current_key_ex(entry_fetched->ini_entries, &name, &len, &num, 0, &pos);
htscanner_debug("setting: %s = %s (cache hit)", name, value);
+#else
+ while (value = zend_hash_get_current_data_ex(entry_fetched->ini_entries, &pos)) {
+ zend_hash_get_current_key_ex(entry_fetched->ini_entries, &name, &num, &pos);
+ htscanner_debug("setting: %s = %s (cache hit)", name, Z_STRVAL_P(res));
+#endif
#if PHP_VERSION_ID < 50204
if (zend_alter_ini_entry(name, len, value, strlen(value), PHP_INI_PERDIR, PHP_INI_STAGE_PHP_INI_STAGE_RUNTIME) == FAILURE) {
-#else
+#elif PHP_VERSION_ID < 70000
if (zend_alter_ini_entry(name, len, value, strlen(value), PHP_INI_PERDIR, PHP_INI_STAGE_HTACCESS) == FAILURE) {
+#else
+ if (zend_alter_ini_entry(name, Z_STR_P(res), PHP_INI_PERDIR, PHP_INI_STAGE_HTACCESS) == FAILURE) {
#endif
char msg[1024];
+#if PHP_VERSION_ID < 70000
snprintf(msg, sizeof (msg), "Adding option from cache (Name: '%s' Value: '%s') failed!\n", name, value);
+#else
+ snprintf(msg, sizeof (msg), "Adding option from cache (Name: '%s' Value: '%s') failed!\n", name->val, Z_STR_P(res));
+ zend_string_release(zcwd);
+#endif
htscannerMutexUnlock(ini_entries_cache_mutex);
RETURN_FAILURE(msg);
}
zend_hash_move_forward_ex(entry_fetched->ini_entries, &pos);
}
+#if PHP_VERSION_ID >= 70000
+ zend_string_release(zcwd);
+#endif
htscannerMutexUnlock(ini_entries_cache_mutex);
return SUCCESS;
}
@@ -405,8 +462,19 @@ static int htscanner_main(TSRMLS_D) /* {{{ */
}
}
+#if PHP_VERSION_ID < 70000
if (ini_entries)
zend_hash_update(ini_entries_cache, cwd, cwd_len, &entry, sizeof(htscanner_cache_entry), NULL);
+#else
+ if (ini_entries) {
+ zend_string *entry_str = zend_string_init((void*)&entry, sizeof(htscanner_cache_entry), 0);
+ zval zentry;
+ ZVAL_STR(&zentry, entry_str);
+ zend_hash_update(ini_entries_cache, zcwd, &zentry);
+ zend_string_release(entry_str);
+ }
+ zend_string_release(zcwd);
+#endif
htscannerMutexUnlock(ini_entries_cache_mutex);
return SUCCESS;
|
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Nov 06 02:00:01 2025 UTC |