diff --git a/crypto/err/openssl.txt b/crypto/err/openssl.txt index 1b4fca9b97..1fa0df36b1 100644 --- a/crypto/err/openssl.txt +++ b/crypto/err/openssl.txt @@ -2668,6 +2668,7 @@ KDF_R_VALUE_MISSING:102:value missing KDF_R_WRONG_OUTPUT_BUFFER_SIZE:112:wrong output buffer size OBJ_R_OID_EXISTS:102:oid exists OBJ_R_UNKNOWN_NID:101:unknown nid +OBJ_R_UNKNOWN_OBJECT_NAME:103:unknown object name OCSP_R_CERTIFICATE_VERIFY_ERROR:101:certificate verify error OCSP_R_DIGEST_ERR:102:digest err OCSP_R_ERROR_IN_NEXTUPDATE_FIELD:122:error in nextupdate field diff --git a/crypto/objects/obj_dat.c b/crypto/objects/obj_dat.c index 0c4ec985cb..b2fd4a0226 100644 --- a/crypto/objects/obj_dat.c +++ b/crypto/objects/obj_dat.c @@ -372,6 +372,10 @@ ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name) if (((nid = OBJ_sn2nid(s)) != NID_undef) || ((nid = OBJ_ln2nid(s)) != NID_undef)) return OBJ_nid2obj(nid); + if (!ossl_isdigit(*s)) { + OBJerr(OBJ_F_OBJ_TXT2OBJ, OBJ_R_UNKNOWN_OBJECT_NAME); + return NULL; + } } /* Work out size of content octets */ diff --git a/crypto/objects/obj_err.c b/crypto/objects/obj_err.c index b32e9f6f55..c55e8ef2d0 100644 --- a/crypto/objects/obj_err.c +++ b/crypto/objects/obj_err.c @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -16,6 +16,8 @@ static const ERR_STRING_DATA OBJ_str_reasons[] = { {ERR_PACK(ERR_LIB_OBJ, 0, OBJ_R_OID_EXISTS), "oid exists"}, {ERR_PACK(ERR_LIB_OBJ, 0, OBJ_R_UNKNOWN_NID), "unknown nid"}, + {ERR_PACK(ERR_LIB_OBJ, 0, OBJ_R_UNKNOWN_OBJECT_NAME), + "unknown object name"}, {0, NULL} }; diff --git a/include/openssl/objectserr.h b/include/openssl/objectserr.h index 3cac9a7327..f1de77945b 100644 --- a/include/openssl/objectserr.h +++ b/include/openssl/objectserr.h @@ -8,8 +8,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef OPENSSL_OBJECTSERR_H -# define OPENSSL_OBJECTSERR_H +#ifndef OPENSSL_OBJERR_H +# define OPENSSL_OBJERR_H # pragma once # include @@ -41,5 +41,6 @@ int ERR_load_OBJ_strings(void); */ # define OBJ_R_OID_EXISTS 102 # define OBJ_R_UNKNOWN_NID 101 +# define OBJ_R_UNKNOWN_OBJECT_NAME 103 #endif