From 22b69b9edfdf6e6172239cbd1075ffe29077d339 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 23 Feb 2017 20:14:16 +0100 Subject: [PATCH] dirmngr: Add new debug flag "extprog" * dirmngr/dirmngr.h (DBG_EXTPROG_VALUE, DBG_EXTPROG): New macros. * dirmngr/dirmngr.c (debug_flags): Add flag "extprog". (handle_connections): Use a macro instead of -1 for an invalid socket. * dirmngr/loadswdb.c (verify_status_cb): Debug the gpgv call. Signed-off-by: Werner Koch --- dirmngr/dirmngr.c | 3 ++- dirmngr/dirmngr.h | 2 ++ dirmngr/http.c | 6 +++--- dirmngr/loadswdb.c | 7 +++++++ 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index 6b4cbcf2d..c877a9b7d 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -267,6 +267,7 @@ static struct debug_flags_s debug_flags [] = { DBG_DNS_VALUE , "dns" }, { DBG_NETWORK_VALUE, "network" }, { DBG_LOOKUP_VALUE , "lookup" }, + { DBG_EXTPROG_VALUE, "extprog" }, { 77, NULL } /* 77 := Do not exit on "help" or "?". */ }; @@ -2215,7 +2216,7 @@ handle_connections (assuan_fd_t listen_fd) close (my_inotify_fd); #endif /*HAVE_INOTIFY_INIT*/ npth_attr_destroy (&tattr); - if (listen_fd != -1) + if (listen_fd != GNUPG_INVALID_FD) assuan_sock_close (fd); cleanup (); log_info ("%s %s stopped\n", strusage(11), strusage(13)); diff --git a/dirmngr/dirmngr.h b/dirmngr/dirmngr.h index b0b603f76..b269865a8 100644 --- a/dirmngr/dirmngr.h +++ b/dirmngr/dirmngr.h @@ -144,6 +144,7 @@ struct #define DBG_IPC_VALUE 1024 /* debug assuan communication */ #define DBG_NETWORK_VALUE 2048 /* debug network I/O. */ #define DBG_LOOKUP_VALUE 8192 /* debug lookup details */ +#define DBG_EXTPROG_VALUE 16384 /* debug external program calls */ #define DBG_X509 (opt.debug & DBG_X509_VALUE) #define DBG_CRYPTO (opt.debug & DBG_CRYPTO_VALUE) @@ -154,6 +155,7 @@ struct #define DBG_IPC (opt.debug & DBG_IPC_VALUE) #define DBG_NETWORK (opt.debug & DBG_NETWORK_VALUE) #define DBG_LOOKUP (opt.debug & DBG_LOOKUP_VALUE) +#define DBG_EXTPROG (opt.debug & DBG_EXTPROG_VALUE) /* A simple list of certificate references. FIXME: Better use certlist_t also for references (Store NULL at .cert) */ diff --git a/dirmngr/http.c b/dirmngr/http.c index e5e36b23f..890f5f6a2 100644 --- a/dirmngr/http.c +++ b/dirmngr/http.c @@ -382,7 +382,7 @@ _my_socket_new (int lnr, assuan_fd_t fd) so->refcount = 1; if (opt_debug) log_debug ("http.c:%d:socket_new: object %p for fd %d created\n", - lnr, (int)so, so->fd); + lnr, so, so->fd); return so; } #define my_socket_new(a) _my_socket_new (__LINE__, (a)) @@ -394,7 +394,7 @@ _my_socket_ref (int lnr, my_socket_t so) so->refcount++; if (opt_debug > 1) log_debug ("http.c:%d:socket_ref: object %p for fd %d refcount now %d\n", - lnr, (int)so, so->fd, so->refcount); + lnr, so, so->fd, so->refcount); return so; } #define my_socket_ref(a) _my_socket_ref (__LINE__,(a)) @@ -412,7 +412,7 @@ _my_socket_unref (int lnr, my_socket_t so, so->refcount--; if (opt_debug > 1) log_debug ("http.c:%d:socket_unref: object %p for fd %d ref now %d\n", - lnr, (int)so, so->fd, so->refcount); + lnr, so, so->fd, so->refcount); if (!so->refcount) { diff --git a/dirmngr/loadswdb.c b/dirmngr/loadswdb.c index 2d6bdc126..5a7778ddd 100644 --- a/dirmngr/loadswdb.c +++ b/dirmngr/loadswdb.c @@ -191,6 +191,9 @@ verify_status_cb (void *opaque, const char *keyword, char *args) { struct verify_status_parm_s *parm = opaque; + if (DBG_EXTPROG) + log_debug ("gpgv status: %s %s\n", keyword, args); + /* We care only about the first valid signature. */ if (!strcmp (keyword, "VALIDSIG") && !parm->anyvalid) { @@ -302,12 +305,16 @@ dirmngr_load_swdb (ctrl_t ctrl, int force) goto leave; } + if (DBG_EXTPROG) + log_debug ("starting gpgv\n"); err = gnupg_exec_tool_stream (gnupg_module_name (GNUPG_MODULE_NAME_GPGV), argv, swdb, swdb_sig, NULL, verify_status_cb, &verify_status_parm); if (!err && verify_status_parm.sigtime == (time_t)(-1)) err = gpg_error (verify_status_parm.anyvalid? GPG_ERR_BAD_SIGNATURE /**/ : GPG_ERR_INV_TIME ); + if (DBG_EXTPROG) + log_debug ("gpgv finished: err=%d\n", err); if (err) goto leave;