Fix check for debug levels for string debug
authorAndre Heinecke <aheinecke@intevation.de>
Mon, 22 Oct 2018 10:13:48 +0000 (12:13 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Mon, 22 Oct 2018 10:13:48 +0000 (12:13 +0200)
* src/w32-gettext.h (wchar_to_utf8, utf8_to_wchar): Fix enable_debug
check.

--
The broken logic caused the string debugging to be active if one
of the debug levels required was enabled. This caused data
leak even if debug data was disabled.

GnuPG-Bug-Id: T4193

src/w32-gettext.h

index e8547d3..4dfe40c 100644 (file)
@@ -73,7 +73,9 @@ char *native_to_utf8 (const char *string);
 
 #define utf8_to_wchar(VAR1) ({wchar_t *retval; \
   retval = _utf8_to_wchar (VAR1); \
-  if ((opt.enable_debug & (DBG_TRACE | DBG_DATA | DBG_MEMORY))) \
+  if ((opt.enable_debug & DBG_TRACE) && \
+      (opt.enable_debug & DBG_DATA) && \
+      (opt.enable_debug & DBG_MEMORY)) \
   { \
     log_debug ("%s:%s:%i wchar_t alloc %p:%S", \
                SRCNAME, __func__, __LINE__, retval, retval); \
@@ -82,7 +84,9 @@ retval;})
 
 #define wchar_to_utf8(VAR1) ({char *retval; \
   retval = _wchar_to_utf8 (VAR1); \
-  if ((opt.enable_debug & (DBG_TRACE | DBG_DATA | DBG_MEMORY))) \
+  if ((opt.enable_debug & DBG_TRACE) && \
+      (opt.enable_debug & DBG_DATA) && \
+      (opt.enable_debug & DBG_MEMORY)) \
   { \
     log_debug ("%s:%s:%i char utf8 alloc %p:%s", \
                SRCNAME, __func__, __LINE__, retval, retval); \