From 40dfb94e0f16928cc79147671492e58b827e2251 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 5 Jul 2023 18:18:23 +0200 Subject: fix mime-type matching (#7882) --- src/mhd/mhd_legal.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/mhd/mhd_legal.c') diff --git a/src/mhd/mhd_legal.c b/src/mhd/mhd_legal.c index 2c4127117..bec33cd48 100644 --- a/src/mhd/mhd_legal.c +++ b/src/mhd/mhd_legal.c @@ -126,10 +126,14 @@ mime_matches (const char *accept_pattern, { const char *da = strchr (accept_pattern, '/'); const char *dm = strchr (mime, '/'); + const char *end; if ( (NULL == da) || (NULL == dm) ) return (0 == strcmp ("*", accept_pattern)); + end = strchr (da, ';'); + if (NULL == end) + end = &da[strlen (da)]; return ( ( (1 == da - accept_pattern) && ('*' == *accept_pattern) ) || @@ -138,8 +142,9 @@ mime_matches (const char *accept_pattern, mime, da - accept_pattern)) ) ) && ( (0 == strcmp (da, "/*")) || - (0 == strcasecmp (da, - dm)) ); + (0 == strncasecmp (da, + dm, + end - da)) ); } @@ -150,7 +155,7 @@ TALER_MHD_xmime_matches (const char *accept_pattern, char *ap = GNUNET_strdup (accept_pattern); char *sptr; - for (const char *tok = strtok_r (ap, ";", &sptr); + for (const char *tok = strtok_r (ap, ",", &sptr); NULL != tok; tok = strtok_r (NULL, ";", &sptr)) { -- cgit v1.2.3