summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordoug <>2015-04-29 01:27:34 +0000
committerdoug <>2015-04-29 01:27:34 +0000
commite6d7279b8ebb49a366737662d11b5ae2e372c84f (patch)
tree058b6219de4430e894b78997496617f67f9e553c
parentdbbc82b4feef691a1a1b227a229e25dadd40e50a (diff)
downloadopenbsd-e6d7279b8ebb49a366737662d11b5ae2e372c84f.tar.gz
openbsd-e6d7279b8ebb49a366737662d11b5ae2e372c84f.tar.bz2
openbsd-e6d7279b8ebb49a366737662d11b5ae2e372c84f.zip
Avoid NULL deref in CBS_get_any_asn1_element().
This function is documented as allowing NULL for out_header_len. ok jsing@
-rw-r--r--src/lib/libssl/bs_cbs.c5
-rw-r--r--src/lib/libssl/src/ssl/bs_cbs.c5
2 files changed, 6 insertions, 4 deletions
diff --git a/src/lib/libssl/bs_cbs.c b/src/lib/libssl/bs_cbs.c
index fc2eafff0e..0237f73681 100644
--- a/src/lib/libssl/bs_cbs.c
+++ b/src/lib/libssl/bs_cbs.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: bs_cbs.c,v 1.5 2015/04/29 01:23:20 doug Exp $ */ 1/* $OpenBSD: bs_cbs.c,v 1.6 2015/04/29 01:27:34 doug Exp $ */
2/* 2/*
3 * Copyright (c) 2014, Google Inc. 3 * Copyright (c) 2014, Google Inc.
4 * 4 *
@@ -236,7 +236,8 @@ CBS_get_any_asn1_element(CBS *cbs, CBS *out, unsigned *out_tag,
236 236
237 if ((tag & CBS_ASN1_CONSTRUCTED) != 0 && num_bytes == 0) { 237 if ((tag & CBS_ASN1_CONSTRUCTED) != 0 && num_bytes == 0) {
238 /* indefinite length */ 238 /* indefinite length */
239 *out_header_len = 2; 239 if (out_header_len != NULL)
240 *out_header_len = 2;
240 return CBS_get_bytes(cbs, out, 2); 241 return CBS_get_bytes(cbs, out, 2);
241 } 242 }
242 243
diff --git a/src/lib/libssl/src/ssl/bs_cbs.c b/src/lib/libssl/src/ssl/bs_cbs.c
index fc2eafff0e..0237f73681 100644
--- a/src/lib/libssl/src/ssl/bs_cbs.c
+++ b/src/lib/libssl/src/ssl/bs_cbs.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: bs_cbs.c,v 1.5 2015/04/29 01:23:20 doug Exp $ */ 1/* $OpenBSD: bs_cbs.c,v 1.6 2015/04/29 01:27:34 doug Exp $ */
2/* 2/*
3 * Copyright (c) 2014, Google Inc. 3 * Copyright (c) 2014, Google Inc.
4 * 4 *
@@ -236,7 +236,8 @@ CBS_get_any_asn1_element(CBS *cbs, CBS *out, unsigned *out_tag,
236 236
237 if ((tag & CBS_ASN1_CONSTRUCTED) != 0 && num_bytes == 0) { 237 if ((tag & CBS_ASN1_CONSTRUCTED) != 0 && num_bytes == 0) {
238 /* indefinite length */ 238 /* indefinite length */
239 *out_header_len = 2; 239 if (out_header_len != NULL)
240 *out_header_len = 2;
240 return CBS_get_bytes(cbs, out, 2); 241 return CBS_get_bytes(cbs, out, 2);
241 } 242 }
242 243