summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2018-05-16 11:59:47 +0100
committerMatt Caswell <matt@openssl.org>2018-05-21 10:31:07 +0100
commitf2bb6b8d81944261f65e3231f6eb707a9185162a (patch)
tree43d58a901728966da1a51a0a571c5f2eade5d24c /crypto
parentec91c3db211c071248ef3a0b6dd9ef5ebdca5ab5 (diff)
Fix undefined behaviour in X509_NAME_cmp()
If the lengths of both names is 0 then don't attempt to do a memcmp. Issue reported by Simon Friedberger, Robert Merget and Juraj Somorovsky. Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> (Merged from https://github.com/openssl/openssl/pull/6291) (cherry picked from commit 511190b691183a1fb160e7e05e2974dc73cab0c6)
Diffstat (limited to 'crypto')
-rw-r--r--crypto/x509/x509_cmp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/crypto/x509/x509_cmp.c b/crypto/x509/x509_cmp.c
index 49c71b9128..2d82f8fa8b 100644
--- a/crypto/x509/x509_cmp.c
+++ b/crypto/x509/x509_cmp.c
@@ -219,7 +219,7 @@ int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b)
ret = a->canon_enclen - b->canon_enclen;
- if (ret)
+ if (ret != 0 || a->canon_enclen == 0)
return ret;
return memcmp(a->canon_enc, b->canon_enc, a->canon_enclen);