From 40dfb94e0f16928cc79147671492e58b827e2251 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 5 Jul 2023 18:18:23 +0200 Subject: [PATCH] fix mime-type matching (#7882) --- src/mhd/mhd_legal.c | 11 ++++++++--- src/testing/test_exchange_api.conf | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) 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)) { diff --git a/src/testing/test_exchange_api.conf b/src/testing/test_exchange_api.conf index b7f8c5c60..c0e4d2f4a 100644 --- a/src/testing/test_exchange_api.conf +++ b/src/testing/test_exchange_api.conf @@ -21,7 +21,7 @@ CONFIG = "postgres:///talercheck" HTTP_PORT = 8082 [exchange] -TERMS_ETAG = 0 +TERMS_ETAG = tos PRIVACY_ETAG = 0 AML_THRESHOLD = EUR:1000000 PORT = 8081