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 <levitte@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20556)
This commit is contained in:
Tomas Mraz 2023-03-21 11:36:56 +01:00
parent f5935fcf8e
commit 908ba3ed9a
2 changed files with 13 additions and 3 deletions

View File

@ -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;

View File

@ -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;
}