Skip to content

Commit 58c1671

Browse files
author
Ilia Alshanetsky
committed
Revert previous commit that caused a buffer overflow (Bug #40634)
1 parent fb3a3b7 commit 58c1671

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

ext/standard/head.c

+5-2
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ PHPAPI int php_setcookie(char *name, int name_len, char *value, int value_len, t
9494
if (domain) {
9595
len += domain_len;
9696
}
97+
98+
cookie = emalloc(len + 100);
99+
97100
if (value && value_len == 0) {
98101
/*
99102
* MSIE doesn't delete a cookie when you set it to a null value
@@ -102,10 +105,10 @@ PHPAPI int php_setcookie(char *name, int name_len, char *value, int value_len, t
102105
*/
103106
time_t t = time(NULL) - 31536001;
104107
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);
105-
spprintf(&cookie, 0, "Set-Cookie: %s=deleted; expires=%s", name, dt);
108+
snprintf(cookie, len + 100, "Set-Cookie: %s=deleted; expires=%s", name, dt);
106109
efree(dt);
107110
} else {
108-
spprintf(&cookie, 0, "Set-Cookie: %s=%s", name, value ? encoded_value : "");
111+
snprintf(cookie, len + 100, "Set-Cookie: %s=%s", name, value ? encoded_value : "");
109112
if (expires > 0) {
110113
strlcat(cookie, "; expires=", len + 100);
111114
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);

0 commit comments

Comments
 (0)