|
|
@@ -579,28 +579,42 @@ rspamd_vprintf_common (rspamd_printf_append_func func, |
|
|
|
p = "(NULL)"; |
|
|
|
} |
|
|
|
|
|
|
|
if (slen == -1) { |
|
|
|
/* NULL terminated string */ |
|
|
|
slen = strlen (p); |
|
|
|
} |
|
|
|
|
|
|
|
if (G_UNLIKELY (width != 0)) { |
|
|
|
slen = MIN (slen, width); |
|
|
|
} |
|
|
|
|
|
|
|
if (G_UNLIKELY (b32)) { |
|
|
|
gchar *b32buf; |
|
|
|
|
|
|
|
if (G_UNLIKELY (slen == -1)) { |
|
|
|
if (G_LIKELY (width != 0)) { |
|
|
|
slen = width; |
|
|
|
} |
|
|
|
else { |
|
|
|
/* NULL terminated string */ |
|
|
|
slen = strlen (p); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
b32buf = rspamd_encode_base32 (p, slen); |
|
|
|
|
|
|
|
if (b32buf) { |
|
|
|
RSPAMD_PRINTF_APPEND (b32buf, strlen (b32buf)); |
|
|
|
g_free (b32buf); |
|
|
|
} |
|
|
|
else { |
|
|
|
RSPAMD_PRINTF_APPEND ("(NULL)", sizeof ("(NULL)") - 1); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (G_UNLIKELY (hex)) { |
|
|
|
gchar hexbuf[2]; |
|
|
|
|
|
|
|
if (G_UNLIKELY (slen == -1)) { |
|
|
|
if (G_LIKELY (width != 0)) { |
|
|
|
slen = width; |
|
|
|
} |
|
|
|
else { |
|
|
|
/* NULL terminated string */ |
|
|
|
slen = strlen (p); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
while (slen) { |
|
|
|
hexbuf[0] = hex == 2 ? _HEX[(*p >> 4) & 0xf] : |
|
|
|
_hex[(*p >> 4) & 0xf]; |
|
|
@@ -609,15 +623,24 @@ rspamd_vprintf_common (rspamd_printf_append_func func, |
|
|
|
p++; |
|
|
|
slen--; |
|
|
|
} |
|
|
|
|
|
|
|
fmt++; |
|
|
|
buf_start = fmt; |
|
|
|
|
|
|
|
} |
|
|
|
else { |
|
|
|
if (slen == -1) { |
|
|
|
/* NULL terminated string */ |
|
|
|
slen = strlen (p); |
|
|
|
} |
|
|
|
|
|
|
|
if (G_UNLIKELY (width != 0)) { |
|
|
|
slen = MIN (slen, width); |
|
|
|
} |
|
|
|
|
|
|
|
RSPAMD_PRINTF_APPEND (p, slen); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
case 'O': |