derick Wed, 18 Nov 2009 22:56:32 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=290958
Log:
- Fixed the setting of cookies in HEAD.
Changed paths:
U php/php-src/trunk/ext/standard/head.c
Modified: php/php-src/trunk/ext/standard/head.c
===================================================================
--- php/php-src/trunk/ext/standard/head.c 2009-11-18 22:48:56 UTC (rev
290957)
+++ php/php-src/trunk/ext/standard/head.c 2009-11-18 22:56:32 UTC (rev
290958)
@@ -79,7 +79,7 @@
{
char *cookie, *encoded_value = NULL;
int len=sizeof("Set-Cookie: ");
- char *dt;
+ UChar *dt;
sapi_header_line ctr = {0};
int result;
@@ -120,24 +120,25 @@
*/
time_t t = time(NULL) - 31536001;
dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s
T")-1, t, 0 TSRMLS_CC);
- snprintf(cookie, len + 100, "Set-Cookie: %s=deleted;
expires=%s", name, dt);
+ snprintf(cookie, len + 100, "Set-Cookie: %s=deleted;
expires=%v", name, dt);
efree(dt);
} else {
+ /* check to make sure that the year does not exceed 4 digits in
length */
+ if (expires >= 253402300800) {
+ efree(cookie);
+ efree(encoded_value);
+ zend_error(E_WARNING, "Expiry date cannot have a year
greater then 9999");
+ return FAILURE;
+ }
snprintf(cookie, len + 100, "Set-Cookie: %s=%s", name, value ?
encoded_value : "");
if (expires > 0) {
char *p;
- strlcat(cookie, "; expires=", len + 100);
+ p = emalloc(48);
+
dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D,
d-M-Y H:i:s T")-1, expires, 0 TSRMLS_CC);
- /* check to make sure that the year does not exceed 4
digits in length */
- p = zend_memrchr(dt, '-', strlen(dt));
- if (*(p + 5) != ' ') {
- efree(dt);
- efree(cookie);
- efree(encoded_value);
- zend_error(E_WARNING, "Expiry date cannot have
a year greater then 9999");
- return FAILURE;
- }
- strlcat(cookie, dt, len + 100);
+ snprintf(p, 48, "; expires=%v", dt );
+ strlcat(cookie, p, len + 100);
+ efree(p);
efree(dt);
}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php