1 From 791177de023574223eddf7288eb7c5a0721ac623 Mon Sep 17 00:00:00 2001
2 From: Werner Koch <wk@gnupg.org>
3 Date: Sun, 18 Mar 2018 17:39:43 +0100
4 Subject: [PATCH] core: Fix regression on arm64 due to invalid use of va_list.
6 * src/logging.c (_gpgrt_log_printhex): Provide a dummy arg instead of
11 Suggested-by: Jakub Wilk <jwilk@jwilk.net>
13 Signed-off-by: Werner Koch <wk@gnupg.org>
15 Upstream-Status: Backport
17 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
20 src/logging.c | 18 ++++++++++++++----
21 1 file changed, 14 insertions(+), 4 deletions(-)
23 diff --git a/src/logging.c b/src/logging.c
24 index 1a4f620..d01f974 100644
27 @@ -1090,9 +1090,10 @@ _gpgrt_log_flush (void)
30 /* Print a hexdump of (BUFFER,LENGTH). With FMT passed as NULL print
31 - * just the raw dump, with FMT being an empty string, print a trailing
32 - * linefeed, otherwise print an entire debug line with the expanded
33 - * FMT followed by a possible wrapped hexdump and a final LF. */
34 + * just the raw dump (in this case ARG_PTR is not used), with FMT
35 + * being an empty string, print a trailing linefeed, otherwise print
36 + * an entire debug line with the expanded FMT followed by a possible
37 + * wrapped hexdump and a final LF. */
39 _gpgrt_logv_printhex (const void *buffer, size_t length,
40 const char *fmt, va_list arg_ptr)
41 @@ -1150,7 +1151,16 @@ _gpgrt_log_printhex (const void *buffer, size_t length,
45 - _gpgrt_logv_printhex (buffer, length, NULL, NULL);
47 + /* va_list is not necessary a pointer and thus we can't use NULL
48 + * because that would conflict with platforms using a straight
49 + * struct for it (e.g. arm64). We use a dummy variable instead;
50 + * the static is a simple way zero it out so to not get
51 + * complains about uninitialized use. */
52 + static va_list dummy_argptr;
54 + _gpgrt_logv_printhex (buffer, length, NULL, dummy_argptr);