]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Add base64 check routine
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 11 Feb 2019 14:14:53 +0000 (14:14 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 11 Feb 2019 14:14:53 +0000 (14:14 +0000)
src/libcryptobox/base64/base64.c
src/libcryptobox/cryptobox.h

index b4ddd3135b8c249afbbf2cd54e202cbc2d2936aa..ff08b9a80aa5119ffa9689be8de006811b1be05c 100644 (file)
@@ -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
index 1d48c06e55c17ac21d1d053f7841d12fd799e7ab..016e58fc294a65d14f55fadb8b92677f51332921 100644 (file)
@@ -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_ */