From: Tomas Mraz Date: Tue, 21 Mar 2023 10:36:56 +0000 (+0100) Subject: OBJ_nid2obj(): Return UNDEF object instead of NULL for NID_undef X-Git-Tag: openssl-3.2.0-alpha1~1106 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=908ba3ed9adbb3df90f7684a3111ca916a45202d;p=thirdparty%2Fopenssl.git OBJ_nid2obj(): Return UNDEF object instead of NULL for NID_undef Fixes a regression from 3.0 from the obj creation refactoring. Fixes #20555 Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/20556) --- diff --git a/crypto/objects/obj_dat.c b/crypto/objects/obj_dat.c index ad476136ae9..466783d47fa 100644 --- a/crypto/objects/obj_dat.c +++ b/crypto/objects/obj_dat.c @@ -299,9 +299,8 @@ ASN1_OBJECT *OBJ_nid2obj(int n) ADDED_OBJ ad, *adp = NULL; ASN1_OBJECT ob; - if (n == NID_undef) - return NULL; - if (n >= 0 && n < NUM_NID && nid_objs[n].nid != NID_undef) + if (n == NID_undef + || (n > 0 && n < NUM_NID && nid_objs[n].nid != NID_undef)) return (ASN1_OBJECT *)&(nid_objs[n]); ad.type = ADDED_NID; diff --git a/test/asn1_internal_test.c b/test/asn1_internal_test.c index d97ca92129f..f91e21cb545 100644 --- a/test/asn1_internal_test.c +++ b/test/asn1_internal_test.c @@ -254,6 +254,16 @@ static int test_obj_create(void) return 1; } +static int test_obj_nid_undef(void) +{ + if (!TEST_ptr(OBJ_nid2obj(NID_undef)) + || !TEST_ptr(OBJ_nid2sn(NID_undef)) + || !TEST_ptr(OBJ_nid2ln(NID_undef))) + return 0; + + return 1; +} + int setup_tests(void) { ADD_TEST(test_tbl_standard); @@ -261,5 +271,6 @@ int setup_tests(void) ADD_TEST(test_empty_nonoptional_content); ADD_TEST(test_unicode_range); ADD_TEST(test_obj_create); + ADD_TEST(test_obj_nid_undef); return 1; }