Wietse Venema:
> > The panic message says "%s" therefore this VBUF_SNPRINTF() call is
> > made while formatting a string with an fmt value of "%s".
>
> Unfortunately, the panic call overwrites the format string that was
> involved with the error, so the analysis for width and precision
> is wrong.
If you built Postfix from source, applying this will save the
format string during panic, and may make problem diagnosis
possible.
Wietse
--- src/util/vbuf_print.c- 2017-01-01 10:58:50.000000000 -0500
+++ src/util/vbuf_print.c 2017-08-30 07:09:17.000000000 -0400
@@ -109,10 +109,10 @@
VBUF_SPACE((bp), (sz)); \
_ret = snprintf((char *) (bp)->ptr, (bp)->cnt, (fmt), (arg)); \
if (_ret < 0) \
- msg_panic("%s: output error for '%s'", myname, (fmt)); \
+ msg_panic("%s: output error for '%s'", myname, mystrdup(fmt)); \
if (_ret >= (bp)->cnt) \
msg_panic("%s: output for '%s' exceeds space %ld", \
- myname, fmt, (long) (bp)->cnt); \
+ myname, mystrdup(fmt), (long) (bp)->cnt); \
VBUF_SKIP(bp); \
} while (0)
#else