summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crypto/objects/obj_dat.c5
-rw-r--r--test/asn1_internal_test.c11
2 files changed, 13 insertions, 3 deletions
diff --git a/crypto/objects/obj_dat.c b/crypto/objects/obj_dat.c
index ad476136ae..466783d47f 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 d97ca92129..f91e21cb54 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;
}