From: Aki Tuomi Date: Tue, 5 Nov 2024 11:56:43 +0000 (+0200) Subject: lib-storage: Check that mail_server_admin is valid URI X-Git-Tag: 2.4.0~281 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5e8d251236703d59ba2037df6f63f06b4d48c91f;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Check that mail_server_admin is valid URI --- 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)) {