vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Wed Dec 23 00:32:31 2015 +0200| [eeab18ae0547bd91b316466c185fd47bf30c1577] | committer: Rémi Denis-Courmont
https: discard leading and trailing OWS in header field values > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=eeab18ae0547bd91b316466c185fd47bf30c1577 --- modules/access/http/message.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/access/http/message.c b/modules/access/http/message.c index c2f61c0..d6ba97d 100644 --- a/modules/access/http/message.c +++ b/modules/access/http/message.c @@ -68,7 +68,8 @@ static int vlc_http_msg_vadd_header(struct vlc_http_msg *m, const char *name, } char *value; - if (unlikely(vasprintf(&value, fmt, ap) < 0)) + int len = vasprintf(&value, fmt, ap); + if (unlikely(len < 0)) return -1; /* IETF RFC7230 §3.2.4 */ @@ -76,6 +77,19 @@ static int vlc_http_msg_vadd_header(struct vlc_http_msg *m, const char *name, if (*p == '\r' || *p == '\n') *p = ' '; + /* Discard leading OWS */ + size_t crop = strspn(value, "\t "); + if (crop > 0) + { + assert((unsigned)len >= crop); + memmove(value, value + crop, len - crop + 1); + len -= crop; + } + + /* Discard trailing OWS */ + while (len > 0 && (value[len - 1] == '\t' || value[len - 1] == ' ')) + value[--len] = '\0'; + /* Fold identically named header field values. This is unfortunately not * possible for Set-Cookie, while Cookie requires a special separator. */ ssize_t idx = vlc_http_msg_find_header(m, name); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
