[FFmpeg-devel] [PATCH v2 1/5] avformat/http: ff_http_do_new_request() returns EINVAL if re-used with different hostname
Jeyapal, Karthick
kjeyapal at akamai.com
Wed Dec 13 23:58:33 EET 2017
>On 12/13/17, 6:05 AM, "Aman Gupta" <aman at tmm1.net on behalf of ffmpeg at tmm1.net> wrote:
>
>From: Aman Gupta <aman at tmm1.net>
>
>This will prevent improper use of ff_http_do_new_request() if the user
>tries to send a request for a different host to a previously connected
>persistent http/1.1 connection.
>---
> libavformat/http.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
>diff --git a/libavformat/http.c b/libavformat/http.c
>index cf86adc617..a3c36423fc 100644
>--- a/libavformat/http.c
>+++ b/libavformat/http.c
>@@ -306,6 +306,22 @@ int ff_http_do_new_request(URLContext *h, const char *uri)
> HTTPContext *s = h->priv_data;
> AVDictionary *options = NULL;
> int ret;
>+ char hostname1[1024], hostname2[1024], proto1[10], proto2[10];
>+ int port1, port2;
>+
>+ av_url_split(proto1, sizeof(proto1), NULL, 0,
>+ hostname1, sizeof(hostname1), &port1,
>+ NULL, 0, s->location);
>+ av_url_split(proto2, sizeof(proto2), NULL, 0,
>+ hostname2, sizeof(hostname2), &port2,
>+ NULL, 0, uri);
>+ if (port1 != port2 || strncmp(hostname1, hostname2, sizeof(hostname2)) != 0) {
>+ av_log(h, AV_LOG_ERROR, "Cannot reuse HTTP connection for different host: %s:%d != %s:%d\n",
>+ hostname1, port1,
>+ hostname2, port2
>+ );
>+ return AVERROR(EINVAL);
>+ }
Nice check!
It will prevent some bad server side errors/crashes, due to any misuse.
>
> ret = http_shutdown(h, h->flags);
> if (ret < 0)
>--
>2.14.3 (Apple Git-98)
More information about the ffmpeg-devel
mailing list