diff --git a/src/x509.c b/src/x509.c index d599a4730..abecda5e3 100644 --- a/src/x509.c +++ b/src/x509.c @@ -686,8 +686,22 @@ WOLFSSL_X509_EXTENSION* wolfSSL_X509_set_ext(WOLFSSL_X509* x509, int loc) /* extCount == loc. Now get the extension. */ /* Check if extension has been set */ isSet = wolfSSL_X509_ext_isSet_by_NID((WOLFSSL_X509*)x509, nid); - ext->obj = wolfSSL_OBJ_nid2obj(nid); - if (ext->obj != NULL) { + + if (wolfSSL_OBJ_nid2ln(nid) != NULL) { + /* This is NOT an unknown OID. */ + ext->obj = wolfSSL_OBJ_nid2obj(nid); + if (ext->obj == NULL) { + WOLFSSL_MSG("\tfail: Invalid OBJECT"); + wolfSSL_X509_EXTENSION_free(ext); + FreeDecodedCert(cert); + #ifdef WOLFSSL_SMALL_STACK + XFREE(cert, NULL, DYNAMIC_TYPE_DCERT); + #endif + return NULL; + } + } + + if (ext->obj) { ext->obj->nid = nid; }