0001-core-Fix-regression-on-arm64-due-to-invalid-use-of-v.patch 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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.
  5. * src/logging.c (_gpgrt_log_printhex): Provide a dummy arg instead of
  6. NULL.
  7. --
  8. Fix
  9. Suggested-by: Jakub Wilk <jwilk@jwilk.net>
  10. Signed-off-by: Werner Koch <wk@gnupg.org>
  11. Signed-off-by: Baruch Siach <baruch@tkos.co.il>
  12. ---
  13. Upstream status: commit 791177de023
  14. src/logging.c | 18 ++++++++++++++----
  15. 1 file changed, 14 insertions(+), 4 deletions(-)
  16. diff --git a/src/logging.c b/src/logging.c
  17. index 1a4f6203d16d..d01f974e4545 100644
  18. --- a/src/logging.c
  19. +++ b/src/logging.c
  20. @@ -1090,9 +1090,10 @@ _gpgrt_log_flush (void)
  21. /* Print a hexdump of (BUFFER,LENGTH). With FMT passed as NULL print
  22. - * just the raw dump, with FMT being an empty string, print a trailing
  23. - * linefeed, otherwise print an entire debug line with the expanded
  24. - * FMT followed by a possible wrapped hexdump and a final LF. */
  25. + * just the raw dump (in this case ARG_PTR is not used), with FMT
  26. + * being an empty string, print a trailing linefeed, otherwise print
  27. + * an entire debug line with the expanded FMT followed by a possible
  28. + * wrapped hexdump and a final LF. */
  29. void
  30. _gpgrt_logv_printhex (const void *buffer, size_t length,
  31. const char *fmt, va_list arg_ptr)
  32. @@ -1150,7 +1151,16 @@ _gpgrt_log_printhex (const void *buffer, size_t length,
  33. va_end (arg_ptr);
  34. }
  35. else
  36. - _gpgrt_logv_printhex (buffer, length, NULL, NULL);
  37. + {
  38. + /* va_list is not necessary a pointer and thus we can't use NULL
  39. + * because that would conflict with platforms using a straight
  40. + * struct for it (e.g. arm64). We use a dummy variable instead;
  41. + * the static is a simple way zero it out so to not get
  42. + * complains about uninitialized use. */
  43. + static va_list dummy_argptr;
  44. +
  45. + _gpgrt_logv_printhex (buffer, length, NULL, dummy_argptr);
  46. + }
  47. }
  48. --
  49. 2.16.2