diff options
author | Matt Caswell <matt@openssl.org> | 2017-06-22 15:25:26 +0100 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2017-06-22 17:00:15 +0100 |
commit | f13615c5b828aeb8e3d9bf2545c803633d1c684f (patch) | |
tree | d37e6602a29dff778344b751fbaf69d91bc45b7d /crypto/objects | |
parent | f6373823c04794d55dd0b30f5691666b1df5705c (diff) | |
download | openssl-f13615c5b828aeb8e3d9bf2545c803633d1c684f.zip openssl-f13615c5b828aeb8e3d9bf2545c803633d1c684f.tar.gz openssl-f13615c5b828aeb8e3d9bf2545c803633d1c684f.tar.bz2 |
Fix OBJ_create() to tolerate a NULL sn and ln
In 1.0.2 and before OBJ_create() allowed the sn or ln parameter to be NULL.
Commit 52832e47 changed that so that it crashed if they were NULL.
This was causing problems with the built-in config oid module. If a long
name was provided OBJ_create() is initially called with a NULL ln and
therefore causes a crash.
Fixes #3733
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3753)
Diffstat (limited to 'crypto/objects')
-rw-r--r-- | crypto/objects/obj_dat.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/crypto/objects/obj_dat.c b/crypto/objects/obj_dat.c index 2f86cd5..f8c1db3 100644 --- a/crypto/objects/obj_dat.c +++ b/crypto/objects/obj_dat.c @@ -684,7 +684,8 @@ int OBJ_create(const char *oid, const char *sn, const char *ln) int ok = 0; /* Check to see if short or long name already present */ - if (OBJ_sn2nid(sn) != NID_undef || OBJ_ln2nid(ln) != NID_undef) { + if ((sn != NULL && OBJ_sn2nid(sn) != NID_undef) + || (ln != NULL && OBJ_ln2nid(ln) != NID_undef)) { OBJerr(OBJ_F_OBJ_CREATE, OBJ_R_OID_EXISTS); return 0; } |