diff options
Diffstat (limited to 'security/nss/lib/certdb/alg1485.c')
-rw-r--r-- | security/nss/lib/certdb/alg1485.c | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/security/nss/lib/certdb/alg1485.c b/security/nss/lib/certdb/alg1485.c index 9a69c5bc5..38b2fe4b5 100644 --- a/security/nss/lib/certdb/alg1485.c +++ b/security/nss/lib/certdb/alg1485.c @@ -703,19 +703,14 @@ CERT_GetOidString(const SECItem* oid) return NULL; } - /* If the OID has length 1, we bail. */ - if (oid->len < 2) { - return NULL; - } - /* first will point to the next sequence of bytes to decode */ first = (PRUint8*)oid->data; /* stop points to one past the legitimate data */ stop = &first[oid->len]; /* - * Check for our pseudo-encoded single-digit OIDs - */ + * Check for our pseudo-encoded single-digit OIDs + */ if ((*first == 0x80) && (2 == oid->len)) { /* Funky encoding. The second byte is the number */ rvString = PR_smprintf("%lu", (PRUint32)first[1]); @@ -733,10 +728,6 @@ CERT_GetOidString(const SECItem* oid) break; } } - /* There's no first bit set, so this isn't valid. Bail.*/ - if (last == stop) { - goto unsupported; - } bytesBeforeLast = (unsigned int)(last - first); if (bytesBeforeLast <= 3U) { /* 0-28 bit number */ PRUint32 n = 0; @@ -757,12 +748,12 @@ CERT_GetOidString(const SECItem* oid) CASE(2, 0x7f); CASE(1, 0x7f); case 0: - n |= last[0] & 0x7f; + n |= + last[0] & 0x7f; break; } - if (last[0] & 0x80) { + if (last[0] & 0x80) goto unsupported; - } if (!rvString) { /* This is the first number.. decompose it */ @@ -1314,7 +1305,8 @@ CERT_GetCertificateEmailAddress(CERTCertificate* cert) } } else if (current->type == certRFC822Name) { rawEmailAddr = - (char*)PORT_ArenaZAlloc(cert->arena, current->name.other.len + 1); + (char*)PORT_ArenaZAlloc(cert->arena, current->name.other.len + + 1); if (!rawEmailAddr) { goto finish; } |