summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbeck <>2021-10-27 10:22:08 +0000
committerbeck <>2021-10-27 10:22:08 +0000
commitb2a89f9426f1ee215d9d57cad8342591dc19aac3 (patch)
tree36af60dc22fd90c8115b4ab185164d6f9b10175e
parentc4b045656c4e6d30f67df55e0294a6f4824f748e (diff)
downloadopenbsd-b2a89f9426f1ee215d9d57cad8342591dc19aac3.tar.gz
openbsd-b2a89f9426f1ee215d9d57cad8342591dc19aac3.tar.bz2
openbsd-b2a89f9426f1ee215d9d57cad8342591dc19aac3.zip
Revert version 1.3 - not allowing the creation of bogus certificates
breaks the ruby regression tests that expect to make bogus certificates and see that they are rejected :( I am reverting this for now to make the regress tests pass, and will bring it back if we decide to patch the regress tests to remove the problem cases
-rw-r--r--src/lib/libcrypto/x509/x509_alt.c50
1 files changed, 3 insertions, 47 deletions
diff --git a/src/lib/libcrypto/x509/x509_alt.c b/src/lib/libcrypto/x509/x509_alt.c
index 02a4a3a377..891c7dd787 100644
--- a/src/lib/libcrypto/x509/x509_alt.c
+++ b/src/lib/libcrypto/x509/x509_alt.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_alt.c,v 1.3 2021/10/26 09:09:53 beck Exp $ */ 1/* $OpenBSD: x509_alt.c,v 1.4 2021/10/27 10:22:08 beck Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project. 3 * project.
4 */ 4 */
@@ -63,8 +63,6 @@
63#include <openssl/err.h> 63#include <openssl/err.h>
64#include <openssl/x509v3.h> 64#include <openssl/x509v3.h>
65 65
66#include "x509_internal.h"
67
68static GENERAL_NAMES *v2i_subject_alt(X509V3_EXT_METHOD *method, 66static GENERAL_NAMES *v2i_subject_alt(X509V3_EXT_METHOD *method,
69 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); 67 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
70static GENERAL_NAMES *v2i_issuer_alt(X509V3_EXT_METHOD *method, 68static GENERAL_NAMES *v2i_issuer_alt(X509V3_EXT_METHOD *method,
@@ -614,11 +612,8 @@ GENERAL_NAME *
614v2i_GENERAL_NAME_ex(GENERAL_NAME *out, const X509V3_EXT_METHOD *method, 612v2i_GENERAL_NAME_ex(GENERAL_NAME *out, const X509V3_EXT_METHOD *method,
615 X509V3_CTX *ctx, CONF_VALUE *cnf, int is_nc) 613 X509V3_CTX *ctx, CONF_VALUE *cnf, int is_nc)
616{ 614{
617 uint8_t *bytes = NULL;
618 char *name, *value;
619 GENERAL_NAME *ret;
620 size_t len = 0;
621 int type; 615 int type;
616 char *name, *value;
622 617
623 name = cnf->name; 618 name = cnf->name;
624 value = cnf->value; 619 value = cnf->value;
@@ -648,46 +643,7 @@ v2i_GENERAL_NAME_ex(GENERAL_NAME *out, const X509V3_EXT_METHOD *method,
648 return NULL; 643 return NULL;
649 } 644 }
650 645
651 ret = a2i_GENERAL_NAME(out, method, ctx, type, value, is_nc); 646 return a2i_GENERAL_NAME(out, method, ctx, type, value, is_nc);
652
653 /* Validate what we have for sanity */
654 type = x509_constraints_general_to_bytes(ret, &bytes, &len);
655 switch(type) {
656 case GEN_DNS:
657 if (!x509_constraints_valid_sandns(bytes, len)) {
658 X509V3error(X509V3_R_BAD_OBJECT);
659 ERR_asprintf_error_data("name=%s value='%s'", name, bytes);
660 goto err;
661 }
662 break;
663 case GEN_URI:
664 if (!x509_constraints_uri_host(bytes, len, NULL)) {
665 X509V3error(X509V3_R_BAD_OBJECT);
666 ERR_asprintf_error_data("name=%s value='%s'", name, bytes);
667 goto err;
668 }
669 break;
670 case GEN_EMAIL:
671 if (!x509_constraints_parse_mailbox(bytes, len, NULL)) {
672 X509V3error(X509V3_R_BAD_OBJECT);
673 ERR_asprintf_error_data("name=%s value='%s'", name, bytes);
674 goto err;
675 }
676 break;
677 case GEN_IPADD:
678 if (len != 4 && len != 16) {
679 X509V3error(X509V3_R_BAD_IP_ADDRESS);
680 ERR_asprintf_error_data("name=%s len=%zu", name, len);
681 goto err;
682 }
683 break;
684 default:
685 break;
686 }
687 return ret;
688 err:
689 GENERAL_NAME_free(ret);
690 return NULL;
691} 647}
692 648
693static int 649static int