summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Engert <kaie@kuix.de>2022-07-18 13:26:10 +0000
committerKai Engert <kaie@kuix.de>2022-07-18 13:26:10 +0000
commit5c6563ae878dace1a1256031600f9adf01cc9dbc (patch)
treefde593a5a9eecc95cc3e621c59f3162189ccfadf
parent27f225efd0d9d32afcfd3a67f6d4f234f372f297 (diff)
downloadnss-hg-5c6563ae878dace1a1256031600f9adf01cc9dbc.tar.gz
Bug 1777672 - Gracefully handle null nickname in CERT_GetCertNicknameWithValidity. r=rrelyeaNSS_3_81_BETA1
Differential Revision: https://phabricator.services.mozilla.com/D150857
-rw-r--r--lib/certhigh/certvfy.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/certhigh/certvfy.c b/lib/certhigh/certvfy.c
index a550d0870..5bf82d9bb 100644
--- a/lib/certhigh/certvfy.c
+++ b/lib/certhigh/certvfy.c
@@ -1913,15 +1913,19 @@ CERT_GetCertNicknameWithValidity(PLArenaPool *arena, CERTCertificate *cert,
{
SECCertTimeValidity validity;
char *nickname = NULL, *tmpstr = NULL;
+ const char *srcNickname = cert->nickname;
+ if (!srcNickname) {
+ srcNickname = "{???}";
+ }
validity = CERT_CheckCertValidTimes(cert, PR_Now(), PR_FALSE);
/* if the cert is good, then just use the nickname directly */
if (validity == secCertTimeValid) {
if (arena == NULL) {
- nickname = PORT_Strdup(cert->nickname);
+ nickname = PORT_Strdup(srcNickname);
} else {
- nickname = PORT_ArenaStrdup(arena, cert->nickname);
+ nickname = PORT_ArenaStrdup(arena, srcNickname);
}
if (nickname == NULL) {
@@ -1933,11 +1937,11 @@ CERT_GetCertNicknameWithValidity(PLArenaPool *arena, CERTCertificate *cert,
* end
*/
if (validity == secCertTimeExpired) {
- tmpstr = PR_smprintf("%s%s", cert->nickname,
+ tmpstr = PR_smprintf("%s%s", srcNickname,
expiredString);
} else if (validity == secCertTimeNotValidYet) {
/* not yet valid */
- tmpstr = PR_smprintf("%s%s", cert->nickname,
+ tmpstr = PR_smprintf("%s%s", srcNickname,
notYetGoodString);
} else {
/* undetermined */