From 5e8d251236703d59ba2037df6f63f06b4d48c91f Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Tue, 5 Nov 2024 13:56:43 +0200 Subject: [PATCH] lib-storage: Check that mail_server_admin is valid URI --- src/config/settings-get.pl | 1 + src/lib-storage/mail-storage-settings.c | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/config/settings-get.pl b/src/config/settings-get.pl index 0946bd621a..6cbf542b04 100755 --- a/src/config/settings-get.pl +++ b/src/config/settings-get.pl @@ -20,6 +20,7 @@ print '#include "fsync-mode.h"'."\n"; print '#include "hash-format.h"'."\n"; print '#include "net.h"'."\n"; print '#include "unichar.h"'."\n"; +print '#include "uri-util.h"'."\n"; print '#include "hash-method.h"'."\n"; print '#include "settings.h"'."\n"; print '#include "message-header-parser.h"'."\n"; diff --git a/src/lib-storage/mail-storage-settings.c b/src/lib-storage/mail-storage-settings.c index a7c2b7e7e5..0680c821e3 100644 --- a/src/lib-storage/mail-storage-settings.c +++ b/src/lib-storage/mail-storage-settings.c @@ -5,6 +5,7 @@ #include "hash-format.h" #include "unichar.h" #include "hostpid.h" +#include "uri-util.h" #include "settings.h" #include "message-address.h" #include "message-header-parser.h" @@ -675,7 +676,14 @@ mail_storage_settings_ext_check(struct event *event ATTR_UNUSED, } hash_format_deinit_free(&format); - // FIXME: check set->mail_server_admin syntax (RFC 5464, Section 6.2.2) + /* check mail_server_admin syntax (RFC 5464, Section 6.2.2) */ + if (*set->mail_server_admin != '\0' && + uri_check(set->mail_server_admin, 0, &error) < 0) { + *error_r = t_strdup_printf("mail_server_admin: " + "'%s' is not a valid URI: %s", + set->mail_server_admin, error); + return FALSE; + } /* parse mail_attachment_indicator_options */ if (array_not_empty(&set->mail_attachment_detection_options)) { -- 2.47.3