From 25572a0a4f89d920a5a347726cac519fa63acb7c Mon Sep 17 00:00:00 2001
From: jsing <>
Date: Sat, 3 Sep 2022 18:54:36 +0000
Subject: Ensure a constructed ASN.1 INTEGER is considered invalid when
 decoding.

---
 src/regress/lib/libcrypto/asn1/asn1basic.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

(limited to 'src')

diff --git a/src/regress/lib/libcrypto/asn1/asn1basic.c b/src/regress/lib/libcrypto/asn1/asn1basic.c
index 9ab23e7849..6ce27a2706 100644
--- a/src/regress/lib/libcrypto/asn1/asn1basic.c
+++ b/src/regress/lib/libcrypto/asn1/asn1basic.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: asn1basic.c,v 1.10 2022/08/28 17:59:57 jsing Exp $ */
+/* $OpenBSD: asn1basic.c,v 1.11 2022/09/03 18:54:36 jsing Exp $ */
 /*
  * Copyright (c) 2017, 2021 Joel Sing <jsing@openbsd.org>
  *
@@ -16,6 +16,7 @@
  */
 
 #include <openssl/asn1.h>
+#include <openssl/err.h>
 
 #include <err.h>
 #include <stdio.h>
@@ -359,6 +360,18 @@ struct asn1_integer_test asn1_integer_tests[] = {
 		.der_len = 11,
 		.want_error = 1,
 	},
+	{
+		/* Invalid encoding (constructed with definite length). */
+		.der = {0x22, 0x03, 0x02, 0x01, 0x01},
+		.der_len = 5,
+		.want_error = 1,
+	},
+	{
+		/* Invalid encoding (constructed with indefinite length). */
+		.der = {0x22, 0x80, 0x02, 0x01, 0x01, 0x00, 0x00},
+		.der_len = 7,
+		.want_error = 1,
+	},
 };
 
 #define N_ASN1_INTEGER_TESTS \
@@ -492,6 +505,7 @@ asn1_integer_decode_test(struct asn1_integer_test *ait)
 		}
 	} else if (ait->want_error == 0) {
 		fprintf(stderr, "FAIL: INTEGER failed to decode\n");
+		ERR_print_errors_fp(stderr);
 		goto failed;
 	}
 
-- 
cgit v1.2.3-55-g6feb