From 55f532e539427ff5829790fd71b6f8c6342b141a Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Fri, 27 Aug 2010 10:59:40 -0600 Subject: [PATCH] m4sh: protect LINENO against stray macro * lib/m4sugar/m4sh.m4 (_AS_LINENO_PREPARE): Double quote entire sed script, to avoid issue uncovered by automake testsuite where 'b' was an m4 macro that broke execution on dash. Reported by Stefano Lattarini. Signed-off-by: Eric Blake --- ChangeLog | 6 ++++++ lib/m4sugar/m4sh.m4 | 10 +++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 236bfcdd..5a11ab3b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2010-08-27 Eric Blake + m4sh: protect LINENO against stray macro + * lib/m4sugar/m4sh.m4 (_AS_LINENO_PREPARE): Double quote entire + sed script, to avoid issue uncovered by automake testsuite where + 'b' was an m4 macro that broke execution on dash. + Reported by Stefano Lattarini. + m4sh: assume ${a:-b} support * tests/m4sh.at (Null variable substitution): New test. * doc/autoconf.texi (Shell Substitutions) <${var:-value}>: Mention diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4 index 8343b259..ef99cb5a 100644 --- a/lib/m4sugar/m4sh.m4 +++ b/lib/m4sugar/m4sh.m4 @@ -1138,23 +1138,23 @@ dnl trailing '-' during substitution so that $LINENO is not a special dnl case at line end. (Raja R Harinath suggested sed '=', and Paul dnl Eggert wrote the scripts with optimization help from Paolo Bonzini). [_AS_LINENO_WORKS || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) +[ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p - /[[$]]LINENO/= + /[$]LINENO/= ' <$as_myself | sed ' - s/[[$]]LINENO.*/&-/ + s/[$]LINENO.*/&-/ t lineno b :lineno N :loop - s/[[$]]LINENO\([[^'$as_cr_alnum'_]].*\n\)\(.*\)/\2\1\2/ + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && - chmod +x "$as_me.lineno" || + chmod +x "$as_me.lineno"] || AS_ERROR([cannot create $as_me.lineno; rerun with a POSIX shell]) # Don't try to exec as it changes $[0], causing all sort of problems -- 2.47.2