summaryrefslogtreecommitdiff
path: root/ext/session/session.c
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2010-01-31 18:06:29 +0000
committerIlia Alshanetsky <iliaa@php.net>2010-01-31 18:06:29 +0000
commitdff4e7fda131f3f25204d7f6e2e549731bedad88 (patch)
tree1277edd44d534c0564a3e4a9d8d961c748bc26ea /ext/session/session.c
parent693eff5dc29f62a123aa554f6985dc8648925232 (diff)
downloadphp-git-dff4e7fda131f3f25204d7f6e2e549731bedad88.tar.gz
Fixed a possible open_basedir/safe_mode bypass in session extension identified by Grzegorz Stachowiak.
Diffstat (limited to 'ext/session/session.c')
-rw-r--r--ext/session/session.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/ext/session/session.c b/ext/session/session.c
index ea3530dcdb..0ef856c9bf 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -687,8 +687,13 @@ static PHP_INI_MH(OnUpdateSaveDir) /* {{{ */
return FAILURE;
}
- if ((p = zend_memrchr(new_value, ';', new_value_length))) {
+ /* we do not use zend_memrchr() since path can contain ; itself */
+ if ((p = strchr(new_value, ';'))) {
+ char *p2;
p++;
+ if ((p2 = strchr(p, ';'))) {
+ p = p2 + 1;
+ }
} else {
p = new_value;
}