]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-mail: Add message_header_name_is_valid()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Sun, 19 Apr 2020 11:03:24 +0000 (14:03 +0300)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Fri, 23 Jul 2021 16:16:43 +0000 (16:16 +0000)
src/lib-mail/message-header-parser.c
src/lib-mail/message-header-parser.h

index f8f99747620fa91553ac69af82a4d8d4cd69a658..c45c63505e2431073a93cebe9cfa7068a3e80e9d 100644 (file)
@@ -434,3 +434,25 @@ message_header_strdup(pool_t pool, const unsigned char *data, size_t size)
        }
        return str_c(str);
 }
+
+bool message_header_name_is_valid(const char *name)
+{
+       /*
+         field-name      =   1*ftext
+
+         ftext           =   %d33-57 /          ; Printable US-ASCII
+                             %d59-126           ;  characters not including
+                                                ;  ":".
+       */
+       for (unsigned int i = 0; name[i] != '\0'; i++) {
+               unsigned char c = name[i];
+               if (c >= 33 && c <= 57) {
+                       /* before ":" */
+               } else if (c >= 59 && c <= 126) {
+                       /* after ":" */
+               } else {
+                       return FALSE;
+               }
+       }
+       return TRUE;
+}
index 4a3415470e4aca04c84d1644d0e926501b234b87..ce0825c8e57a5267c0a6f6b0b999a7bc59134616 100644 (file)
@@ -79,4 +79,7 @@ void message_header_line_write(buffer_t *output,
 const char *
 message_header_strdup(pool_t pool, const unsigned char *data, size_t size);
 
+/* Returns TRUE if message header name is valid. */
+bool message_header_name_is_valid(const char *name);
+
 #endif