diff options
author | tb <> | 2023-08-15 17:38:00 +0000 |
---|---|---|
committer | tb <> | 2023-08-15 17:38:00 +0000 |
commit | 594f1c9e06ca2b2ac0d5db40463e13ade642a54a (patch) | |
tree | e4558c2e6124ce856f2c42c15975227c8b219d26 | |
parent | e4af2299b47c4fe8e0a7e2afc9d769280449f9d9 (diff) | |
download | openbsd-594f1c9e06ca2b2ac0d5db40463e13ade642a54a.tar.gz openbsd-594f1c9e06ca2b2ac0d5db40463e13ade642a54a.tar.bz2 openbsd-594f1c9e06ca2b2ac0d5db40463e13ade642a54a.zip |
Avoid undefined behavior with memcmp(NULL, x, 0) in ASN1_STRING_cmp()
ok jsing miod
-rw-r--r-- | src/lib/libcrypto/asn1/a_string.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/lib/libcrypto/asn1/a_string.c b/src/lib/libcrypto/asn1/a_string.c index bfd2abf2f7..ca03008186 100644 --- a/src/lib/libcrypto/asn1/a_string.c +++ b/src/lib/libcrypto/asn1/a_string.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: a_string.c,v 1.14 2023/07/05 21:23:36 beck Exp $ */ | 1 | /* $OpenBSD: a_string.c,v 1.15 2023/08/15 17:38:00 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -119,10 +119,12 @@ ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b) | |||
119 | return -1; | 119 | return -1; |
120 | if ((cmp = (a->length - b->length)) != 0) | 120 | if ((cmp = (a->length - b->length)) != 0) |
121 | return cmp; | 121 | return cmp; |
122 | if ((cmp = memcmp(a->data, b->data, a->length)) != 0) | 122 | if (a->length != 0) { |
123 | return cmp; | 123 | if ((cmp = memcmp(a->data, b->data, a->length)) != 0) |
124 | return 0; | ||
125 | } | ||
124 | 126 | ||
125 | return (a->type - b->type); | 127 | return a->type - b->type; |
126 | } | 128 | } |
127 | LCRYPTO_ALIAS(ASN1_STRING_cmp); | 129 | LCRYPTO_ALIAS(ASN1_STRING_cmp); |
128 | 130 | ||