aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2020-03-17 10:07:54 -0400
committerNick Mathewson <nickm@torproject.org>2020-03-17 10:44:38 -0400
commit2328c79a5fbc2f1995390dd08002244bc952246d (patch)
tree6bb6ab462ce48a0e3931345b432963178a77ba97
parent8abdb394893a1704f885278f5f5d7913cdf516c9 (diff)
downloadtor-2328c79a5fbc2f1995390dd08002244bc952246d.tar.gz
tor-2328c79a5fbc2f1995390dd08002244bc952246d.zip
Add off-by-one checks for key length.
-rw-r--r--src/test/test_crypto.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/test/test_crypto.c b/src/test/test_crypto.c
index 2373e5bf86..5af0cce130 100644
--- a/src/test/test_crypto.c
+++ b/src/test/test_crypto.c
@@ -1505,6 +1505,21 @@ test_crypto_pk_bad_size(void *arg)
pk2 = crypto_pk_asn1_decode_private(buf, n, 1020);
tt_assert(! pk2);
+ /* Set the max bit count one bit smaller: we should refuse to decode the
+ key.*/
+ pk2 = crypto_pk_asn1_decode_private(buf, n, 1023);
+ tt_assert(! pk2);
+
+ /* Correct size: should work. */
+ pk2 = crypto_pk_asn1_decode_private(buf, n, 1024);
+ tt_assert(pk2);
+ crypto_pk_free(pk2);
+
+ /* One bit larger: should work. */
+ pk2 = crypto_pk_asn1_decode_private(buf, n, 1025);
+ tt_assert(pk2);
+ crypto_pk_free(pk2);
+
/* Set the max bit count larger: it should decode fine. */
pk2 = crypto_pk_asn1_decode_private(buf, n, 2048);
tt_assert(pk2);