When parsing a macro argument results in delayed escape sequence
authorschwarze <schwarze@openbsd.org>
Sat, 21 Oct 2023 17:10:12 +0000 (17:10 +0000)
committerschwarze <schwarze@openbsd.org>
Sat, 21 Oct 2023 17:10:12 +0000 (17:10 +0000)
commit7bda13b189a4f018fdaecef65dbcb2de30679627
tree23ea3fe49d312276afcccddd20217d793f895552
parent34570e4bae6807cfcbb5d22d3aa02488102b5b25
When parsing a macro argument results in delayed escape sequence
expansion, re-check for all contained escape sequences whether they
need delayed expansion, not just for the particular escape sequences
that triggered delayed expansion in the first place.  This is needed
because delayed expansion can result in strings containing nested
escape sequences recursively needing delayed expansion, too.

This fixes an assertion failure in krb5_openlog(3), see:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=266882

Thanks to Wolfram Schneider <wosch at FreeBSD> for reporting the bug
and to Baptiste Daroussin <bapt at FreeBSD> for forwarding the report.
usr.bin/mandoc/mandoc.h
usr.bin/mandoc/roff.c