lavf/http: fix cookie parsing.

The current code would use any unknown attribute-value pair
as the cookie value.
RFC 6265 states that the first key-value pair is the actual
cookie, and the attribute-value pairs only start after.

With the current code:
Set-Cookie: test=good_value; path=/; dummy=42
gives this:
Cookie: dummy=42
instead of this with the new code:
Cookie: test=good_value
This commit is contained in:
Nicolas George 2014-08-17 14:09:45 +02:00
parent 94f60b6544
commit 481cbc5ad5
1 changed files with 6 additions and 4 deletions

View File

@ -565,8 +565,11 @@ static int get_cookies(HTTPContext *s, char **cookies, const char *path,
set_cookies = NULL;
while ((param = av_strtok(cookie, "; ", &next_param))) {
cookie = NULL;
if (!av_strncasecmp("path=", param, 5)) {
if (cookie) {
// first key-value pair is the actual cookie value
cvalue = av_strdup(param);
cookie = NULL;
} else if (!av_strncasecmp("path=", param, 5)) {
av_free(cpath);
cpath = av_strdup(&param[5]);
} else if (!av_strncasecmp("domain=", param, 7)) {
@ -581,8 +584,7 @@ static int get_cookies(HTTPContext *s, char **cookies, const char *path,
!av_strncasecmp("version", param, 7)) {
// ignore Comment, Max-Age, Secure and Version
} else {
av_free(cvalue);
cvalue = av_strdup(param);
// ignore unknown attributes
}
}
if (!cdomain)