@@ -12988,7 +12988,6 @@ static int GenerateDNSEntryRIDString(DNS_entry* entry, void* heap)
1298812988{
1298912989 int i, j, ret = 0;
1299012990 int nameSz = 0;
12991- int numerical = 0;
1299212991 int nid = 0;
1299312992 int tmpSize = MAX_OID_SZ;
1299412993 word32 oid = 0;
@@ -13019,18 +13018,23 @@ static int GenerateDNSEntryRIDString(DNS_entry* entry, void* heap)
1301913018 ret = DecodeObjectId((const byte*)(entry->name),(word32)entry->len,
1302013019 tmpName, (word32*)&tmpSize);
1302113020
13022- numerical = 1;
1302313021 if (ret == 0) {
1302413022 j = 0;
1302513023 /* Append each number of dotted form. */
1302613024 for (i = 0; i < tmpSize; i++) {
13027- ret = XSNPRINTF(oidName + j, MAX_OID_SZ, "%d", tmpName[i]);
13025+ if (j > MAX_OID_SZ) {
13026+ return BUFFER_E;
13027+ }
13028+
13029+ if (i < tmpSize - 1) {
13030+ ret = XSNPRINTF(oidName + j, MAX_OID_SZ - j, "%d.", tmpName[i]);
13031+ }
13032+ else {
13033+ ret = XSNPRINTF(oidName + j, MAX_OID_SZ - j, "%d", tmpName[i]);
13034+ }
13035+
1302813036 if (ret >= 0) {
1302913037 j += ret;
13030- if (i < tmpSize - 1) {
13031- oidName[j] = '.';
13032- j++;
13033- }
1303413038 }
1303513039 else {
1303613040 return BUFFER_E;
@@ -13044,18 +13048,15 @@ static int GenerateDNSEntryRIDString(DNS_entry* entry, void* heap)
1304413048 if (ret == 0) {
1304513049 nameSz = (int)XSTRLEN((const char*)finalName);
1304613050
13047- entry->ridString = (char*)XMALLOC(nameSz + numerical , heap,
13048- DYNAMIC_TYPE_ALTNAME);
13051+ entry->ridString = (char*)XMALLOC(nameSz + 1 , heap,
13052+ DYNAMIC_TYPE_ALTNAME);
1304913053
1305013054 if (entry->ridString == NULL) {
1305113055 ret = MEMORY_E;
1305213056 }
1305313057
1305413058 if (ret == 0) {
13055- XMEMCPY(entry->ridString, finalName, nameSz);
13056- if (numerical) {
13057- entry->ridString[nameSz] = '\0';
13058- }
13059+ XMEMCPY(entry->ridString, finalName, nameSz + 1);
1305913060 }
1306013061 }
1306113062
0 commit comments