]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Add further unit tests for e-mail validation
authorBob Beck <beck@openssl.org>
Fri, 17 Apr 2026 18:25:14 +0000 (12:25 -0600)
committerTomas Mraz <tomas@openssl.foundation>
Thu, 11 Jun 2026 15:08:41 +0000 (17:08 +0200)
Ensure we correctly catch misformed things.

Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Mon Jun  8 19:59:29 2026

test/verify_extra_test.c

index d49566abe92b9671a1fdf94720b2ed778d90d0ba..052172e245568cf365cc33356a2db29e48a22d93 100644 (file)
@@ -556,6 +556,37 @@ static int yolo_ip_validation(const uint8_t *name, size_t len)
     return 1;
 }
 
+static const char *valid_emails[] = {
+    "@bb",
+    "b@bb",
+    "b@b-b",
+    "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@bb",
+    "b@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
+    "b@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."
+    "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb."
+    "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc."
+    "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
+    NULL,
+};
+
+static const char *invalid_emails[] = {
+    "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@bb",
+    "b@b",
+    "b@bb.",
+    "b@bb..bb",
+    "b@bb-.bb",
+    "b@-bb.bb",
+    "b@bb.-bb",
+    "@",
+    "@b",
+    "b@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
+    "b@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."
+    "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb."
+    "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc."
+    "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
+    NULL,
+};
+
 static int test_vpm_input_validation(void)
 {
     const char *utf8mail = "学生@muppetry.ca";
@@ -591,6 +622,14 @@ static int test_vpm_input_validation(void)
         if (!TEST_false(X509_VERIFY_PARAM_set1_host(vpm, multiname_emails[i], 0)))
             goto err;
     }
+    for (size_t i = 0; valid_emails[i] != NULL; i++) {
+        if (!TEST_true(X509_VERIFY_PARAM_set1_email(vpm, valid_emails[i], 0)))
+            goto err;
+    }
+    for (size_t i = 0; invalid_emails[i] != NULL; i++) {
+        if (TEST_true(X509_VERIFY_PARAM_set1_email(vpm, invalid_emails[i], 0)))
+            goto err;
+    }
     for (size_t i = 0; multiname_ips[i] != NULL; i++) {
         size_t l = strlen(multiname_ips[i]);
         if (!TEST_true(X509_VERIFY_PARAM_set1_ip_asc(vpm, multiname_ips[i])))