projects
/
m6w6
/
ext-http
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
- really fix http_parse_cookie()
[m6w6/ext-http]
/
http_cookie_api.c
diff --git
a/http_cookie_api.c
b/http_cookie_api.c
index fb3a9505c438634d03b94082867835f5eaa971d0..bf9af4048c74cfae088374c8b475f52583257c67 100644
(file)
--- a/
http_cookie_api.c
+++ b/
http_cookie_api.c
@@
-185,11
+185,13
@@
PHP_HTTP_API http_cookie_list *_http_parse_cookie_ex(http_cookie_list *list, con
switch (st)
{
case ST_QUOTE:
switch (st)
{
case ST_QUOTE:
+ quote:
if (*c == '"') {
if (*c == '"') {
- if (*(c-1) != '\\') {
- st = ST_ADD;
- } else {
+ if (*(c-1) == '\\') {
memmove(c-1, c, strlen(c)+1);
memmove(c-1, c, strlen(c)+1);
+ goto quote;
+ } else {
+ goto add;
}
} else {
if (!val) {
}
} else {
if (!val) {
@@
-215,10
+217,8
@@
PHP_HTTP_API http_cookie_list *_http_parse_cookie_ex(http_cookie_list *list, con
break;
case ';':
break;
case ';':
- if (!*(c+1)) {
- goto add;
- }
case '\0':
case '\0':
+ goto add;
st = ST_ADD;
break;
st = ST_ADD;
break;
@@
-288,8
+288,9
@@
PHP_HTTP_API http_cookie_list *_http_parse_cookie_ex(http_cookie_list *list, con
add:
if (val) {
vallen = c - val;
add:
if (val) {
vallen = c - val;
- if (*c) --vallen;
- while (val[vallen-1] == ' ') --vallen;
+ if (st != ST_QUOTE) {
+ while (val[vallen-1] == ' ') --vallen;
+ }
} else {
val = "";
vallen = 0;
} else {
val = "";
vallen = 0;