exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

commit 3a6ae694ecba19af06d84906facbcb5f7d51d72b
parent 2ce37548c0b204eace2661992b23214cfd0e0b4b
Author: Christian Grothoff <christian@grothoff.org>
Date:   Mon,  2 Aug 2021 19:48:37 +0200

-work on #6948

Diffstat:
Msrc/include/taler_util.h | 9+++++++++
Msrc/util/url.c | 16++++++++++++++++
2 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/src/include/taler_util.h b/src/include/taler_util.h @@ -183,6 +183,15 @@ TALER_project_data_default (void); char * TALER_urlencode (const char *s); +/** + * Test if all characters in @a url are valid for + * a URL. + * + * @param url URL to sanity-check + * @return true if @a url only contains valid characters + */ +bool +TALER_url_valid_charset (const char *url); /** * Check if @a lang matches the @a language_pattern, and if so with diff --git a/src/util/url.c b/src/util/url.c @@ -365,4 +365,20 @@ TALER_url_absolute_raw (const char *proto, } +bool +TALER_url_valid_charset (const char *url) +{ + for (unsigned int i = 0; '\0' != url[i]; i++) + { +#define ALLOWED_CHARACTERS \ + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/:&?-.,=_~%" + if (NULL == strchr (ALLOWED_CHARACTERS, + (int) url[i])) + return false; +#undef ALLOWED_CHARACTERS + } + return true; +} + + /* end of url.c */