summaryrefslogtreecommitdiff
path: root/ext/session/session.c
diff options
context:
space:
mode:
authorYasuo Ohgaki <yohgaki@php.net>2014-07-19 09:53:04 +0900
committerYasuo Ohgaki <yohgaki@php.net>2014-07-19 09:53:04 +0900
commitf83a6c33b407603c346dc3b20ac031e7594d37e8 (patch)
tree7c8c3e2859fd277d1245cc5f3f577a877e441430 /ext/session/session.c
parent982342b057d6ef811367ff804751d0d901a529b7 (diff)
parente946de29d2f337f140780086b0ccefd13e2095ef (diff)
downloadphp-git-f83a6c33b407603c346dc3b20ac031e7594d37e8.tar.gz
Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4: Fixed bug #66827 Session raises E_NOTICE when session name variable is array
Diffstat (limited to 'ext/session/session.c')
-rw-r--r--ext/session/session.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/ext/session/session.c b/ext/session/session.c
index 7822ffe59c..eb14e07b65 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -1422,9 +1422,16 @@ PHPAPI const ps_serializer *_php_find_ps_serializer(char *name TSRMLS_DC) /* {{{
}
/* }}} */
-#define PPID2SID \
- convert_to_string((*ppid)); \
- PS(id) = estrndup(Z_STRVAL_PP(ppid), Z_STRLEN_PP(ppid))
+static void ppid2sid(zval **ppid TSRMLS_DC) {
+ if (Z_TYPE_PP(ppid) != IS_STRING) {
+ PS(id) = NULL;
+ PS(send_cookie) = 1;
+ } else {
+ convert_to_string((*ppid));
+ PS(id) = estrndup(Z_STRVAL_PP(ppid), Z_STRLEN_PP(ppid));
+ PS(send_cookie) = 0;
+ }
+}
PHPAPI void php_session_reset_id(TSRMLS_D) /* {{{ */
{
@@ -1518,9 +1525,8 @@ PHPAPI void php_session_start(TSRMLS_D) /* {{{ */
Z_TYPE_PP(data) == IS_ARRAY &&
zend_hash_find(Z_ARRVAL_PP(data), PS(session_name), lensess + 1, (void **) &ppid) == SUCCESS
) {
- PPID2SID;
+ ppid2sid(ppid TSRMLS_CC);
PS(apply_trans_sid) = 0;
- PS(send_cookie) = 0;
PS(define_sid) = 0;
}
@@ -1529,8 +1535,7 @@ PHPAPI void php_session_start(TSRMLS_D) /* {{{ */
Z_TYPE_PP(data) == IS_ARRAY &&
zend_hash_find(Z_ARRVAL_PP(data), PS(session_name), lensess + 1, (void **) &ppid) == SUCCESS
) {
- PPID2SID;
- PS(send_cookie) = 0;
+ ppid2sid(ppid TSRMLS_CC);
}
if (!PS(use_only_cookies) && !PS(id) &&
@@ -1538,8 +1543,7 @@ PHPAPI void php_session_start(TSRMLS_D) /* {{{ */
Z_TYPE_PP(data) == IS_ARRAY &&
zend_hash_find(Z_ARRVAL_PP(data), PS(session_name), lensess + 1, (void **) &ppid) == SUCCESS
) {
- PPID2SID;
- PS(send_cookie) = 0;
+ ppid2sid(ppid TSRMLS_CC);
}
}