summaryrefslogtreecommitdiff
path: root/session.c
diff options
context:
space:
mode:
authorBen Fuhrmannek2014-11-12 13:46:38 +0100
committerBen Fuhrmannek2014-11-12 13:46:38 +0100
commit17849bcb55f757e6271c7d3e21ab34ccec849e07 (patch)
treec4e03b3c233a74cdd02348f3dfdd024ac777f943 /session.c
parentd618c47b3e8945484c7e202f5dfbf2669870f16d (diff)
fixed session recursion - issue #60
Diffstat (limited to 'session.c')
-rw-r--r--session.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/session.c b/session.c
index a3261c9..827c6b7 100644
--- a/session.c
+++ b/session.c
@@ -487,7 +487,6 @@ static php_ps_globals_43_44 *session_globals = NULL;
487#define SESSION_G(v) (session_globals->v) 487#define SESSION_G(v) (session_globals->v)
488#endif 488#endif
489 489
490static ps_module *ps_mod_user = NULL;
491 490
492ps_serializer *(*suhosin_find_ps_serializer)(char *name TSRMLS_DC) = NULL; 491ps_serializer *(*suhosin_find_ps_serializer)(char *name TSRMLS_DC) = NULL;
493 492
@@ -1018,14 +1017,14 @@ static void suhosin_hook_session_module(TSRMLS_D)
1018static PHP_INI_MH(suhosin_OnUpdateSaveHandler) 1017static PHP_INI_MH(suhosin_OnUpdateSaveHandler)
1019{ 1018{
1020 int r; 1019 int r;
1021 char *tmp;
1022 1020
1023 if ((ps_mod_user) && (SUHOSIN_G(s_original_mod) == ps_mod_user) && (strcmp(new_value, "user") == 0)) { 1021 if (stage == PHP_INI_STAGE_RUNTIME && SESSION_G(session_status) == php_session_none && SUHOSIN_G(s_original_mod)
1022 && strcmp(new_value, "user") == 0 && strcmp(((ps_module*)SUHOSIN_G(s_original_mod))->s_name, "user") == 0) {
1024 return SUCCESS; 1023 return SUCCESS;
1025 } 1024 }
1026 1025
1027 SESSION_G(mod) = SUHOSIN_G(s_original_mod); 1026 SESSION_G(mod) = SUHOSIN_G(s_original_mod);
1028 1027
1029 r = old_OnUpdateSaveHandler(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC); 1028 r = old_OnUpdateSaveHandler(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC);
1030 1029
1031 suhosin_hook_session_module(TSRMLS_C); 1030 suhosin_hook_session_module(TSRMLS_C);
@@ -1095,12 +1094,6 @@ void suhosin_hook_session(TSRMLS_D)
1095 } 1094 }
1096#endif 1095#endif
1097#endif 1096#endif
1098 if (ps_mod_user == NULL) {
1099 ps_mod_user = DL_FETCH_SYMBOL(module->handle, "ps_mod_user");
1100 if (ps_mod_user == NULL) {
1101 ps_mod_user = DL_FETCH_SYMBOL(module->handle, "_ps_mod_user");
1102 }
1103 }
1104 1097
1105 if (old_OnUpdateSaveHandler != NULL) { 1098 if (old_OnUpdateSaveHandler != NULL) {
1106 return; 1099 return;