#0 fmtmsg (to=0x8de4b0 "testuser", num=num@entry=0x4a1e43 "550", enhsc=0x0,
eno=eno@entry=0, fmt=fmt@entry=0x4a2871 "%s", ap=ap@entry=0x7ffde99f8358,
eb=0x76be20 <MsgBuf> "")
at err.c:920
#1 0x0000000000430416 in usrerr (fmt=fmt@entry=0x4a2871 "%s") at err.c:299
#2 0x0000000000476614 in smtp (nullserver=nullserver@entry=0x0,
d_flags=d_flags@entry=0x765238 <Daemons+152>, e=e@entry=0x6c8b40
<MainEnvelope>) at srvrsmtp.c:3065
#3 0x000000000040a6b6 in main (argc=6, argv=0x7ffde9a00148, envp=<optimized
out>) at main.c:2711
caused by debian/patches/format-security.patch which turns
usrerr("451 4.7.1 Greylisting in action, please come back in 00:30:00")
into
usrerr("%s", "451 4.7.1 Greylisting in action, please come back in 00:30:00")
and "%s" does not start with a smtp status code ... resulting in "550" from
"num"
parameter being used instead.
Help would be welcome for a proper fix. From a hardening POV this patch is
needed
- we cannot pass an untrusted string (the status string returned by
milter-greylist)
as a format string to printf.
Andreas