diff options
author | Yi EungJun <eungjun.yi@navercorp.com> | 2014-06-18 07:11:53 +0900 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-06-17 15:25:00 -0700 |
commit | f34a655d4d1e25f314cd5760e2a39bec28950aa1 (patch) | |
tree | 0f60932eb635669b9429eee85479046dcd4a390f /http.c | |
parent | c553fd1c1ef76688b6200e66a825b530b0b02140 (diff) | |
download | git-f34a655d4d1e25f314cd5760e2a39bec28950aa1.tar.gz git-f34a655d4d1e25f314cd5760e2a39bec28950aa1.tar.xz |
http: fix charset detection of extract_content_type()
extract_content_type() could not extract a charset parameter if the
parameter is not the first one and there is a whitespace and a following
semicolon just before the parameter. For example:
text/plain; format=fixed ;charset=utf-8
And it also could not handle correctly some other cases, such as:
text/plain; charset=utf-8; format=fixed
text/plain; some-param="a long value with ;semicolons;"; charset=utf-8
Thanks-to: Jeff King <peff@peff.net>
Signed-off-by: Yi EungJun <eungjun.yi@navercorp.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'http.c')
-rw-r--r-- | http.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -927,7 +927,7 @@ static int extract_param(const char *raw, const char *name, return -1; raw++; - while (*raw && !isspace(*raw)) + while (*raw && !isspace(*raw) && *raw != ';') strbuf_addch(out, *raw++); return 0; } @@ -971,7 +971,7 @@ static void extract_content_type(struct strbuf *raw, struct strbuf *type, strbuf_reset(charset); while (*p) { - while (isspace(*p)) + while (isspace(*p) || *p == ';') p++; if (!extract_param(p, "charset", charset)) return; |