]> git.ipfire.org Git - thirdparty/autoconf.git/commit
AS_ECHO(_N): Do not expand macros named ‘s’ or ‘n’ (#110377)
authorZack Weinberg <zackw@panix.com>
Mon, 16 Nov 2020 15:03:39 +0000 (10:03 -0500)
committerZack Weinberg <zackw@panix.com>
Mon, 16 Nov 2020 15:03:39 +0000 (10:03 -0500)
commitb7e32b4dc746ea867ed68f41d767178b34cc43a0
tree2a176b73db79b5466b3177bb9c788c4f41b33fc8
parent15acc26a209accd353f5961487dfef3a03e12b4a
AS_ECHO(_N): Do not expand macros named ‘s’ or ‘n’ (#110377)

AS_ECHO expands to ‘printf "%s\n" $1’.  If a configure script defines
an M4 macro named ‘s’ or ‘n’ it will be expanded in the first argument
to printf, which is almost certainly not what was intended.
The configure script for ruby 2.7.2 uses ‘AS_VAR_PUSHDEF([s], ...)’
and breaks with 2.69d because of this.

Add some extra quoting so that the ‘%s\n’ is treated as literal;
similarly for AS_ECHO_N and the legacy shell variables $as_echo
and $as_echo_n.

For now, anyway, don’t quote the word ‘printf’; if someone does
define that as a M4 macro they might well mean to affect AS_ECHO.
(Whether this is something we *want* to allow, we can worry about
when it comes up.)

Fixes bug #110377.

* lib/m4sugar/m4sh.m4 (_AS_ECHO_N_PREPARE, AS_ECHO, AS_ECHO_N):
  Add another layer of quoting around the first argument to printf.
* tests/m4sh.at (Redefining AS_ECHO internals): New test.
lib/m4sugar/m4sh.m4
tests/m4sh.at