Bug #71599 [NEW]: trans sid handling rework broke interaction with cookies

From: Date: Mon, 15 Feb 2016 15:33:24 +0000
Subject: Bug #71599 [NEW]: trans sid handling rework broke interaction with cookies
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-199231@lists.php.net to get a copy of this message
From: phpbug at wisl dot de Operating system: All PHP version: 7.0.3 Package: Session related Bug Type: Bug Bug description:trans sid handling rework broke interaction with cookies Description: ------------ I am using session.use_trans_sid=1 as a transparent fallback for users who have cookies disabled. By setting both use_trans_sid and use_cookies until PHP7 the cookie users would silently be upgraded to using cookies, while users without cookies could still use the session related function due to PHPSESSID that was written automatically into the html. Cause seems to be this commit: https://github.com/php/php-src/commit/f248df900300c5b2201d4cf634d58d413399e2eb "Cleanup trans sid code. Behavior is unchanged." But the behavior is changed, because the new macro APPLY_TRANS_SID only looks for the ini settings use_trans_sid and use_only_cookies, but the code wrt. cookies like lines 540+541 was removed. Test script: --------------- <?php ini_set("session.use_cookies","1"); ini_set("session.use_only_cookies","0"); ini_set("session.use_trans_sid","1"); session_start(); ?> <a href="bugtest.php">Follow Me</a> Expected result: ---------------- On first call to the supplied test script (wenn saved as bugtest.php) the use_trans_sid feature will insert an additional parameter PHPSESSID into the <a href>, but because of use_cookies the script will also send an Set-Cookie-Header. After clicking the link, the same page will reopen again. But if cookies are allowed in the browser, the <a href> will now no longer contain a PHPSESSID parameter. After clicking the link, the <a href> should only still contain a PHPSESSID parameter, if there was no cookie set. This behavior works as expected as of PHP 5.6.18. Actual result: -------------- Under PHP7 (tested with 7.0.2 and 7.0.3) it will: * no longer send a Set-Cookie Header, despite use_cookies=1 and use_only_cookies=0 * will still rewrite the <a href> even if a cookies is already set While testing I tried to call the script under PHP7 without any PHPSESSID parameter or cookie and it even segfaulted: (gdb) run /srv/www/htdocs/bugtest.php Starting program: /usr/bin/php-cgi7.0 /srv/www/htdocs/bugtest.php [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". Program received signal SIGSEGV, Segmentation fault. 0x00000000008b6507 in zend_hash_str_find () (gdb) bt #0 0x00000000008b6507 in zend_hash_str_find () #1 0x00000000006975a0 in php_session_start () #2 0x0000000000698d25 in zif_session_start () #3 0x00000000008feeee in ZEND_DO_ICALL_SPEC_HANDLER () #4 0x00000000008ee59b in execute_ex () #5 0x0000000000971826 in zend_execute () #6 0x000000000089f901 in zend_execute_scripts () #7 0x000000000081bb18 in php_execute_script () #8 0x000000000048daa0 in main () I will try to add more details for the segfault later... -- Edit bug report at https://bugs.php.net/bug.php?id=71599&edit=1 -- Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=71599&r=trysnapshot54 Try a snapshot (PHP 5.5): https://bugs.php.net/fix.php?id=71599&r=trysnapshot55 Try a snapshot (trunk): https://bugs.php.net/fix.php?id=71599&r=trysnapshottrunk Fixed in SVN: https://bugs.php.net/fix.php?id=71599&r=fixed Fixed in release: https://bugs.php.net/fix.php?id=71599&r=alreadyfixed Need backtrace: https://bugs.php.net/fix.php?id=71599&r=needtrace Need Reproduce Script: https://bugs.php.net/fix.php?id=71599&r=needscript Try newer version: https://bugs.php.net/fix.php?id=71599&r=oldversion Not developer issue: https://bugs.php.net/fix.php?id=71599&r=support Expected behavior: https://bugs.php.net/fix.php?id=71599&r=notwrong Not enough info: https://bugs.php.net/fix.php?id=71599&r=notenoughinfo Submitted twice: https://bugs.php.net/fix.php?id=71599&r=submittedtwice register_globals: https://bugs.php.net/fix.php?id=71599&r=globals PHP 4 support discontinued: https://bugs.php.net/fix.php?id=71599&r=php4 Daylight Savings: https://bugs.php.net/fix.php?id=71599&r=dst IIS Stability: https://bugs.php.net/fix.php?id=71599&r=isapi Install GNU Sed: https://bugs.php.net/fix.php?id=71599&r=gnused Floating point limitations: https://bugs.php.net/fix.php?id=71599&r=float No Zend Extensions: https://bugs.php.net/fix.php?id=71599&r=nozend MySQL Configuration Error: https://bugs.php.net/fix.php?id=71599&r=mysqlcfg

« previous php.bugs (#199231) next »