From 174af15725d4989a840ff3098996cc8a0568f724 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 18 Oct 2018 16:50:18 +0200 Subject: [PATCH] core: Return an error if NULL is provided for genkey's parms. * src/debug.c (_gpgme_debug_buffer): Bail out of BUF is NULL. * src/genkey.c (gpgme_op_genkey): Do no deref a NULL in TRACE_LOGBUF. (gpgme_op_genkey_start): Ditto. Return an error if PARMS is NULL. -- This robustness patch should solve one part of GnuPG-bug-id: 4192 Signed-off-by: Werner Koch --- src/debug.c | 3 +++ src/genkey.c | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/debug.c b/src/debug.c index d7604a7c..37baabb0 100644 --- a/src/debug.c +++ b/src/debug.c @@ -379,6 +379,9 @@ _gpgme_debug_buffer (int lvl, const char *const fmt, if (!_gpgme_debug_trace ()) return; + if (!buffer) + return; + while (idx < len) { char str[51]; diff --git a/src/genkey.c b/src/genkey.c index ffca7e8e..0108aab0 100644 --- a/src/genkey.c +++ b/src/genkey.c @@ -283,9 +283,9 @@ gpgme_op_genkey_start (gpgme_ctx_t ctx, const char *parms, TRACE_BEG2 (DEBUG_CTX, "gpgme_op_genkey_start", ctx, "pubkey=%p, seckey=%p", pubkey, seckey); - TRACE_LOGBUF (parms, strlen (parms)); + TRACE_LOGBUF (parms, parms? strlen (parms):0); - if (!ctx) + if (!ctx || parms) return TRACE_ERR (gpg_error (GPG_ERR_INV_ARG)); err = genkey_start (ctx, 0, parms, pubkey, seckey); @@ -304,7 +304,7 @@ gpgme_op_genkey (gpgme_ctx_t ctx, const char *parms, gpgme_data_t pubkey, TRACE_BEG2 (DEBUG_CTX, "gpgme_op_genkey", ctx, "pubkey=%p, seckey=%p", pubkey, seckey); - TRACE_LOGBUF (parms, strlen (parms)); + TRACE_LOGBUF (parms, parms? strlen (parms):0); if (!ctx) return TRACE_ERR (gpg_error (GPG_ERR_INV_ARG));