diff options
author | corvid <corvid@lavabit.com> | 2009-06-07 16:28:21 +0000 |
---|---|---|
committer | corvid <corvid@lavabit.com> | 2009-06-07 16:28:21 +0000 |
commit | 09eb8947dc9030c6ae93839ec2ad81dc9dd1aefc (patch) | |
tree | 59be5db2f7ac29503995451797d7178490369f3e | |
parent | fc73b489605bdca36318a78a56a8664394bdfbea (diff) |
only parse charset parameter for text/* media types
-rw-r--r-- | src/misc.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -198,6 +198,7 @@ void a_Misc_parse_content_type(const char *str, char **major, char **minor, char **charset) { const char *s; + bool_t is_text; if (major) *major = NULL; @@ -211,6 +212,7 @@ void a_Misc_parse_content_type(const char *str, char **major, char **minor, for (s = str; isalnum(*s) || (*s == '-'); s++); if (major) *major = dStrndup(str, s - str); + is_text = (s - str == 4) && !dStrncasecmp(str, "text", 4); if (*s == '/') { for (str = ++s; isalnum(*s) || (*s == '-'); s++); @@ -218,7 +220,8 @@ void a_Misc_parse_content_type(const char *str, char **major, char **minor, *minor = dStrndup(str, s - str); } - if (charset && *s) { + if (is_text && charset && *s) { + /* charset parameter is defined for text media type (RFC 2046) */ const char terminators[] = " ;\t"; const char key[] = "charset"; |