From 8bd324e9e4b8ceb4d0fff7ebe3c56372949be759 Mon Sep 17 00:00:00 2001 From: Duncan Salerno Date: Sat, 22 Sep 2012 21:17:36 +0100 Subject: http: Increase buffer sizes to cope with longer URIs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use the MAX_URL_SIZE define where applicable. Increase buffer sizes for all buffers that need to fit a long pathname - buffers that need to fit only the hostname (and other short strings, but not the pathname - such as "headers" in http_connect) are kept at 1024 bytes for now. Also increase the max line length in http_read_header, since it might need to contain a full url for Location: redirects. Signed-off-by: Martin Storsjö --- libavformat/http.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'libavformat/http.c') diff --git a/libavformat/http.c b/libavformat/http.c index 041a9b0ff6..43c6cbc032 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -32,8 +32,11 @@ /* XXX: POST protocol is not completely implemented because avconv uses only a subset of it. */ -/* used for protocol handling */ -#define BUFFER_SIZE 1024 +/* The IO buffer size is unrelated to the max URL size in itself, but needs + * to be large enough to fit the full request headers (including long + * path names). + */ +#define BUFFER_SIZE MAX_URL_SIZE #define MAX_REDIRECTS 8 typedef struct { @@ -97,8 +100,8 @@ static int http_open_cnx(URLContext *h) const char *path, *proxy_path, *lower_proto = "tcp", *local_path; char hostname[1024], hoststr[1024], proto[10]; char auth[1024], proxyauth[1024] = ""; - char path1[1024]; - char buf[1024], urlbuf[1024]; + char path1[MAX_URL_SIZE]; + char buf[1024], urlbuf[MAX_URL_SIZE]; int port, use_proxy, err, location_changed = 0, redirects = 0, attempts = 0; HTTPAuthType cur_auth_type, cur_proxy_auth_type; HTTPContext *s = h->priv_data; @@ -349,7 +352,7 @@ static inline int has_header(const char *str, const char *header) static int http_read_header(URLContext *h, int *new_location) { HTTPContext *s = h->priv_data; - char line[1024]; + char line[MAX_URL_SIZE]; int err = 0; s->chunksize = -1; -- cgit v1.2.3