diff options
| author | Yasuo Ohgaki <yohgaki@php.net> | 2014-07-19 10:00:10 +0900 |
|---|---|---|
| committer | Yasuo Ohgaki <yohgaki@php.net> | 2014-07-19 10:00:10 +0900 |
| commit | 5ed63b3bfc40ae7b6767f3a871a23ad8e23a0845 (patch) | |
| tree | 7e6463f42a684c90cb2e4ab980bf6bc3924ae214 /ext/session/session.c | |
| parent | af676be06661884964bdddf737adfadb677b2178 (diff) | |
| parent | d0d5a1c444e1cf87dc947d733619a0238c8a0c34 (diff) | |
| download | php-git-5ed63b3bfc40ae7b6767f3a871a23ad8e23a0845.tar.gz | |
Merge branch 'PHP-5.6'
* PHP-5.6:
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.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/ext/session/session.c b/ext/session/session.c index 05fa95d4da..b24e6365f1 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -1437,9 +1437,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) /* {{{ */ { @@ -1533,9 +1540,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; } @@ -1544,8 +1550,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) && @@ -1553,8 +1558,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); } } |
