diff options
author | Christoph M. Becker <cmb@php.net> | 2015-08-24 23:03:50 +0200 |
---|---|---|
committer | Christoph M. Becker <cmb@php.net> | 2015-08-24 23:03:50 +0200 |
commit | fc203fa37eb0454c94e7e30f3b4e5fc81b699699 (patch) | |
tree | 151ba898bb888bacaeada5c8b5b320cc36257a99 | |
parent | 78b2b1d6f74705d7835bf34297c2c6c78b2d0601 (diff) | |
download | php-git-fc203fa37eb0454c94e7e30f3b4e5fc81b699699.tar.gz |
Fix #67131: setcookie() conditional for empty values not met
PHP applies a workaround for old MSIE where setting an empty cookie value would
not delete the cookie. This workaround is only triggered if an empty string (or
a value that converts to an empty string) is actually given as $value parameter
of setcookie. If the $value parameter is omitted, an empty cookie value is
sent. This commit fixes the inconsistent behavior.
-rw-r--r-- | ext/standard/head.c | 2 | ||||
-rw-r--r-- | ext/standard/tests/network/setcookie.phpt | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/ext/standard/head.c b/ext/standard/head.c index f66c60437b..56a48a0be3 100644 --- a/ext/standard/head.c +++ b/ext/standard/head.c @@ -110,7 +110,7 @@ PHPAPI int php_setcookie(char *name, int name_len, char *value, int value_len, t cookie = emalloc(len + 100); - if (value && value_len == 0) { + if (value == NULL || value_len == 0) { /* * MSIE doesn't delete a cookie when you set it to a null value * so in order to force cookies to be deleted, even on MSIE, we diff --git a/ext/standard/tests/network/setcookie.phpt b/ext/standard/tests/network/setcookie.phpt index bf04ec78de..f63c6ec815 100644 --- a/ext/standard/tests/network/setcookie.phpt +++ b/ext/standard/tests/network/setcookie.phpt @@ -6,6 +6,7 @@ date.timezone=UTC --FILE-- <?php setcookie('name'); +setcookie('name', ''); setcookie('name', 'value'); setcookie('name', 'space value'); setcookie('name', 'value', 0); @@ -19,7 +20,8 @@ setcookie('name', 'value', 0, '', '', FALSE, TRUE); $expected = array( - 'Set-Cookie: name=', + 'Set-Cookie: name=deleted; expires='.date('D, d-M-Y H:i:s', 1).' GMT; Max-Age=0', + 'Set-Cookie: name=deleted; expires='.date('D, d-M-Y H:i:s', 1).' GMT; Max-Age=0', 'Set-Cookie: name=value', 'Set-Cookie: name=space+value', 'Set-Cookie: name=value', @@ -64,6 +66,7 @@ while (next($headers) !== FALSE); echo ($i === 0) ? 'OK' : 'A total of '.$i.' errors found.'; +?> --EXPECTHEADERS-- --EXPECT-- |