6765b54235
Signed-off-by: Peter Jones <pjones@redhat.com>
64 lines
1.6 KiB
Diff
64 lines
1.6 KiB
Diff
From 6796e5f7b0ab1eb08f92887ae0427cf5a4120e0b Mon Sep 17 00:00:00 2001
|
|
From: Peter Jones <pjones@redhat.com>
|
|
Date: Sun, 8 Nov 2015 14:42:29 -0500
|
|
Subject: [PATCH 1/5] pesign: when nss fails to tell us -EPERM or -ENOENT,
|
|
figure it out.
|
|
|
|
This should make -EPERM problems much easier for the user to diagnose.
|
|
|
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
---
|
|
src/pesign.c | 24 ++++++++++++++++++++----
|
|
1 file changed, 20 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/src/pesign.c b/src/pesign.c
|
|
index 1d72657..09b6a2b 100644
|
|
--- a/src/pesign.c
|
|
+++ b/src/pesign.c
|
|
@@ -17,7 +17,9 @@
|
|
* Author(s): Peter Jones <pjones@redhat.com>
|
|
*/
|
|
|
|
+#include <err.h>
|
|
#include <fcntl.h>
|
|
+#include <glob.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
@@ -576,14 +578,28 @@ main(int argc, char *argv[])
|
|
|
|
if (!daemon) {
|
|
SECStatus status;
|
|
- if (need_db)
|
|
+ if (need_db) {
|
|
status = NSS_Init(certdir);
|
|
- else
|
|
+ if (status != SECSuccess) {
|
|
+ char *globpattern = NULL;
|
|
+ rc = asprintf(&globpattern, "%s/cert*.db",
|
|
+ certdir);
|
|
+ if (rc > 0) {
|
|
+ glob_t globbuf;
|
|
+ memset(&globbuf, 0, sizeof(globbuf));
|
|
+ rc = glob(globpattern, GLOB_ERR, NULL,
|
|
+ &globbuf);
|
|
+ if (rc != 0) {
|
|
+ err(1, "Could not open NSS database (\"%s\")",
|
|
+ PORT_ErrorToString(PORT_GetError()));
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ } else
|
|
status = NSS_NoDB_Init(NULL);
|
|
if (status != SECSuccess) {
|
|
- fprintf(stderr, "Could not initialize nss: %s\n",
|
|
+ errx(1, "Could not initialize nss. NSS says \"%s\" errno says \"%m\"\n",
|
|
PORT_ErrorToString(PORT_GetError()));
|
|
- exit(1);
|
|
}
|
|
|
|
status = register_oids(ctxp->cms_ctx);
|
|
--
|
|
2.5.0
|
|
|