From 50827d831facf267f05154eac95714f0deb1e3b7 Mon Sep 17 00:00:00 2001 From: Nalin Dahyabhai Date: Dec 15 2010 22:30:08 +0000 Subject: - correctly check for errors parsing cm_cert (D10063) --- diff --git a/src/certsave-n.c b/src/certsave-n.c index 16050a6..4d35225 100644 --- a/src/certsave-n.c +++ b/src/certsave-n.c @@ -86,12 +86,14 @@ cm_certsave_n_main(int fd, struct cm_store_ca *ca, struct cm_store_entry *entry, /* Handle the base64 decode. */ p = entry->cm_cert; q = NULL; - while (strncmp(p, "-----BEGIN ", 11) == 0) { - p += strcspn(p, "\r\n"); - p += strspn(p, "\r\n"); + if (p != NULL) { + while (strncmp(p, "-----BEGIN ", 11) == 0) { + p += strcspn(p, "\r\n"); + p += strspn(p, "\r\n"); + } + q = strstr(p, "-----END"); } - q = strstr(p, "-----END"); - if ((p == NULL) || (q == NULL)) { + if ((*p == '\0') || (q == NULL)) { cm_log(1, "Unable to parse certificate.\n"); PORT_FreeArena(arena, PR_TRUE); if (NSS_Shutdown() != SECSuccess) {