diff options
author | doug <> | 2015-04-29 01:27:34 +0000 |
---|---|---|
committer | doug <> | 2015-04-29 01:27:34 +0000 |
commit | e6d7279b8ebb49a366737662d11b5ae2e372c84f (patch) | |
tree | 058b6219de4430e894b78997496617f67f9e553c | |
parent | dbbc82b4feef691a1a1b227a229e25dadd40e50a (diff) | |
download | openbsd-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.c | 5 | ||||
-rw-r--r-- | src/lib/libssl/src/ssl/bs_cbs.c | 5 |
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 | ||