From: Vsevolod Stakhov Date: Mon, 11 Feb 2019 14:14:53 +0000 (+0000) Subject: [Minor] Add base64 check routine X-Git-Tag: 1.9.0~177 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08a77ec01eabb4e10d0750427925610ecada3686;p=thirdparty%2Frspamd.git [Minor] Add base64 check routine --- diff --git a/src/libcryptobox/base64/base64.c b/src/libcryptobox/base64/base64.c index b4ddd3135b..ff08b9a80a 100644 --- a/src/libcryptobox/base64/base64.c +++ b/src/libcryptobox/base64/base64.c @@ -146,3 +146,27 @@ base64_test (bool generic, size_t niters, size_t len) return cycles; } + + +gboolean +rspamd_cryptobox_base64_is_valid (const gchar *in, gsize inlen) +{ + const guchar *p, *end; + + if (inlen == 0) { + return FALSE; + } + + p = in; + end = in + inlen; + + while (p < end && *p != '=') { + if (!g_ascii_isspace (*p)) { + if (base64_table_dec[*p] == 255) { + return FALSE; + } + } + } + + return TRUE; +} \ No newline at end of file diff --git a/src/libcryptobox/cryptobox.h b/src/libcryptobox/cryptobox.h index 1d48c06e55..016e58fc29 100644 --- a/src/libcryptobox/cryptobox.h +++ b/src/libcryptobox/cryptobox.h @@ -399,4 +399,13 @@ guint64 rspamd_cryptobox_fast_hash_specific ( */ gboolean rspamd_cryptobox_base64_decode (const gchar *in, gsize inlen, guchar *out, gsize *outlen); + +/** + * Returns TRUE if data looks like a valid base64 string + * @param in + * @param inlen + * @return + */ +gboolean rspamd_cryptobox_base64_is_valid (const gchar *in, gsize inlen); + #endif /* CRYPTOBOX_H_ */