http: never send 'Cookie: (null)' to the server
authorwm4 <nfxjfg@googlemail.com>
Fri, 21 Mar 2014 17:51:30 +0000 (18:51 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 21 Mar 2014 19:32:09 +0000 (20:32 +0100)
If a domain has some cookies set, but matching the cookie fails due to
the port being different, get_cookies() succeeds, but sets cookies to
NULL. The caller of get_cookies() didn't check for the NULL value.

This also avoids passing NULL to libc string functions, which is
undefined behavior

Fixes Ticket2180

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/http.c

index 5e1c9ab..aefc9fa 100644 (file)
@@ -746,7 +746,7 @@ static int http_connect(URLContext *h, const char *path, const char *local_path,
                            "Content-Type: %s\r\n", s->content_type);
     if (!has_header(s->headers, "\r\nCookie: ") && s->cookies) {
         char *cookies = NULL;
-        if (!get_cookies(s, &cookies, path, hoststr)) {
+        if (!get_cookies(s, &cookies, path, hoststr) && cookies) {
             len += av_strlcatf(headers + len, sizeof(headers) - len,
                                "Cookie: %s\r\n", cookies);
             av_free(cookies);