From c0268c449d0f3d23be5ec7b92fe92e7e078166cf Mon Sep 17 00:00:00 2001 From: "Neal H. Walfield" Date: Mon, 8 Feb 2016 00:31:35 +0100 Subject: [PATCH] gpg: Fix format_keyid when dynamically allocating the buffer. * g10/keyid.c (format_keyid): Return a char *, not a const char *. If BUFFER is NULL, then set LEN to the static buffer's size. -- Signed-off-by: Neal H. Walfield --- g10/keydb.h | 2 +- g10/keyid.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/g10/keydb.h b/g10/keydb.h index e679d94b4..9b4a1cfb5 100644 --- a/g10/keydb.h +++ b/g10/keydb.h @@ -399,7 +399,7 @@ char *pubkey_string (PKT_public_key *pk, char *buffer, size_t bufsize); #define PUBKEY_STRING_SIZE 32 u32 v3_keyid (gcry_mpi_t a, u32 *ki); void hash_public_key( gcry_md_hd_t md, PKT_public_key *pk ); -const char *format_keyid (u32 *keyid, int format, char *buffer, int len); +char *format_keyid (u32 *keyid, int format, char *buffer, int len); size_t keystrlen(void); const char *keystr(u32 *keyid); const char *keystr_with_sub (u32 *main_kid, u32 *sub_kid); diff --git a/g10/keyid.c b/g10/keyid.c index f6842762e..49eb5f6d5 100644 --- a/g10/keyid.c +++ b/g10/keyid.c @@ -274,12 +274,15 @@ v3_keyid (gcry_mpi_t a, u32 *ki) } -const char * +char * format_keyid (u32 *keyid, int format, char *buffer, int len) { char tmp[KEYID_STR_SIZE]; if (! buffer) - buffer = tmp; + { + buffer = tmp; + len = sizeof (tmp); + } if (format == KF_DEFAULT) format = opt.keyid_format;