summaryrefslogtreecommitdiff
path: root/src/regress
diff options
context:
space:
mode:
Diffstat (limited to 'src/regress')
-rw-r--r--src/regress/lib/libssl/tlsext/tlsexttest.c80
1 files changed, 79 insertions, 1 deletions
diff --git a/src/regress/lib/libssl/tlsext/tlsexttest.c b/src/regress/lib/libssl/tlsext/tlsexttest.c
index 3d03c2c0d3..5cf39e63ae 100644
--- a/src/regress/lib/libssl/tlsext/tlsexttest.c
+++ b/src/regress/lib/libssl/tlsext/tlsexttest.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tlsexttest.c,v 1.36 2020/05/11 18:20:01 jsing Exp $ */ 1/* $OpenBSD: tlsexttest.c,v 1.37 2020/05/23 17:13:24 beck Exp $ */
2/* 2/*
3 * Copyright (c) 2017 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2017 Joel Sing <jsing@openbsd.org>
4 * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> 4 * Copyright (c) 2017 Doug Hogan <doug@openbsd.org>
@@ -3544,6 +3544,81 @@ done:
3544 return (failure); 3544 return (failure);
3545} 3545}
3546 3546
3547unsigned char *valid_hostnames[] = {
3548 "openbsd.org",
3549 "op3nbsd.org",
3550 "org",
3551 "3openbsd.com",
3552 "3-0penb-d.c-m",
3553 "a",
3554 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com",
3555 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."
3556 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."
3557 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."
3558 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
3559 NULL,
3560};
3561
3562static int
3563test_tlsext_valid_hostnames(void) {
3564 int i, failure = 0;
3565 for (i = 0; valid_hostnames[i] != NULL; i++) {
3566 CBS cbs;
3567 CBS_init(&cbs, valid_hostnames[i], strlen(valid_hostnames[i]));
3568 if (!tlsext_sni_is_valid_hostname(&cbs)) {
3569 fprintf(stderr, "FAIL: %s\n", valid_hostnames[i]);
3570 FAIL("Valid hostname rejected");
3571 failure = 1;
3572 goto done;
3573 }
3574 }
3575 done:
3576 return failure;
3577}
3578
3579unsigned char *invalid_hostnames[] = {
3580 "openbsd.org.",
3581 "openbsd..org",
3582 "openbsd.org-",
3583 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com",
3584 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."
3585 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."
3586 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."
3587 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.a",
3588 "-p3nbsd.org",
3589 "openbs-.org",
3590 "openbsd\n.org",
3591 "open_bsd.org",
3592 "open\178bsd.org",
3593 "open\255bsd.org",
3594 NULL,
3595};
3596
3597static int
3598test_tlsext_invalid_hostnames(void) {
3599 int i, failure = 0;
3600 CBS cbs;
3601 for (i = 0; invalid_hostnames[i] != NULL; i++) {
3602 CBS_init(&cbs, invalid_hostnames[i],
3603 strlen(invalid_hostnames[i]));
3604 if (tlsext_sni_is_valid_hostname(&cbs)) {
3605 fprintf(stderr, "%s\n", invalid_hostnames[i]);
3606 FAIL("Invalid hostname accepted");
3607 failure = 1;
3608 goto done;
3609 }
3610 }
3611 CBS_init(&cbs, valid_hostnames[0],
3612 strlen(valid_hostnames[0]) + 1);
3613 if (tlsext_sni_is_valid_hostname(&cbs)) {
3614 FAIL("hostname with NUL byte accepted");
3615 failure = 1;
3616 goto done;
3617 }
3618 done:
3619 return failure;
3620}
3621
3547 3622
3548int 3623int
3549main(int argc, char **argv) 3624main(int argc, char **argv)
@@ -3595,5 +3670,8 @@ main(int argc, char **argv)
3595 failed |= test_tlsext_clienthello_build(); 3670 failed |= test_tlsext_clienthello_build();
3596 failed |= test_tlsext_serverhello_build(); 3671 failed |= test_tlsext_serverhello_build();
3597 3672
3673 failed |= test_tlsext_valid_hostnames();
3674 failed |= test_tlsext_invalid_hostnames();
3675
3598 return (failed); 3676 return (failed);
3599} 3677}