From 16058ce168e3b531d8fb7f9b58b76f611e9a4499 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Wed, 19 Jul 2023 12:01:01 -0600 Subject: [PATCH] Address review comments --- src/ssl.c | 7 +++--- wolfcrypt/src/asn.c | 53 +++++++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/src/ssl.c b/src/ssl.c index d4ebe9cc2..de74c3457 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -29370,9 +29370,10 @@ void* wolfSSL_GetHKDFExtractCtx(WOLFSSL* ssl) #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ #if defined(OPENSSL_ALL) -/* Returns the oid buffer from the short name or long name of an ASN1_object - * and NULL on failure */ -const byte* wolfSSL_OBJ_txt2oidBuf(char* buf, word32* inOutSz, word32 oidType) + /* Returns the oid buffer from the short name or long name of an ASN1_object + * and NULL on failure */ + const byte* wolfSSL_OBJ_txt2oidBuf(char* buf, word32* inOutSz, + word32 oidType) { word32 oid; int nid; diff --git a/wolfcrypt/src/asn.c b/wolfcrypt/src/asn.c index b6051bfc9..1c00e4a78 100644 --- a/wolfcrypt/src/asn.c +++ b/wolfcrypt/src/asn.c @@ -12353,16 +12353,16 @@ static int GenerateDNSEntryIPString(DNS_entry* entry, void* heap) */ static int GenerateDNSEntryRIDString(DNS_entry* entry, void* heap) { - int i, j, ret = 0; - int nameSz; - int tmpSize = MAX_OID_SZ; - int endChar = 0; - int nid = 0; - word32 oid = 0; - word32 idx = 0; + int i, j, ret = 0; + int nameSz = 0; + int numerical = 0; + int nid = 0; + int tmpSize = MAX_OID_SZ; + word32 oid = 0; + word32 idx = 0; word16 tmpName[MAX_OID_SZ]; - char finalName[MAX_OID_SZ]; - char* rid; + char oidName[MAX_OID_SZ]; + char* finalName; if (entry == NULL || entry->type != ASN_RID_TYPE) { return BAD_FUNC_ARG; @@ -12372,30 +12372,30 @@ static int GenerateDNSEntryRIDString(DNS_entry* entry, void* heap) return BAD_FUNC_ARG; } - XMEMSET(&finalName, 0, MAX_OID_SZ); - rid = entry->name; + XMEMSET(&oidName, 0, MAX_OID_SZ); - ret = GetOID((const byte*)rid, &idx, &oid, oidIgnoreType, entry->len); + ret = GetOID((const byte*)entry->name, &idx, &oid, oidIgnoreType, + entry->len); if (ret == 0 && (nid = oid2nid(oid, oidCsrAttrType)) > 0) { - rid = (char*)wolfSSL_OBJ_nid2ln(nid); - XMEMCPY(finalName, rid, XSTRLEN((const char*)rid)); + /* OID has known string value */ + finalName = (char*)wolfSSL_OBJ_nid2ln(nid); } else { /* Decode OBJECT_ID into dotted form array. */ - ret = DecodeObjectId((const byte*)(rid),(word32)entry->len, tmpName, - (word32*)&tmpSize); + ret = DecodeObjectId((const byte*)(entry->name),(word32)entry->len, + tmpName, (word32*)&tmpSize); + numerical = 1; if (ret == 0) { - endChar = 1; j = 0; /* Append each number of dotted form. */ for (i = 0; i < tmpSize; i++) { - ret = XSNPRINTF(finalName + j, MAX_OID_SZ, "%d", tmpName[i]); + ret = XSNPRINTF(oidName + j, MAX_OID_SZ, "%d", tmpName[i]); if (ret >= 0) { j += ret; if (i < tmpSize - 1) { - finalName[j] = '.'; + oidName[j] = '.'; j++; } } @@ -12404,19 +12404,26 @@ static int GenerateDNSEntryRIDString(DNS_entry* entry, void* heap) } } ret = 0; + finalName = oidName; } } if (ret == 0) { nameSz = (int)XSTRLEN((const char*)finalName); - entry->ridString = (char*)XMALLOC(nameSz + endChar, heap, DYNAMIC_TYPE_ALTNAME); + + entry->ridString = (char*)XMALLOC(nameSz + numerical, heap, + DYNAMIC_TYPE_ALTNAME); + if (entry->ridString == NULL) { ret = MEMORY_E; } - XMEMCPY(entry->ridString, finalName, nameSz); - if (endChar) - entry->ridString[nameSz] = '\0'; + if (ret == 0) { + XMEMCPY(entry->ridString, finalName, nameSz); + if (numerical) { + entry->ridString[nameSz] = '\0'; + } + } } return ret;