From f01a21763180c9c11d70326ad36b9761cde9131c Mon Sep 17 00:00:00 2001 From: Kerin Millar Date: Mon, 4 Jan 2021 00:57:29 +0100 Subject: [PATCH] Don't rely on support for indirect expansion in the shell POSIX does not define the indirect expansion syntax. Moreover, if going to the trouble of executing Perl, one may as well take full advantage of it. Address the issue by first having the shell export the variable. Next, have Perl perform the replacement without utilising any form of code injection. Instead, export 'var' into Perl's environment. That way, Perl can reference the variable name as $ENV{var} and its value as $ENV{$ENV{var}}. Signed-off-by: Kerin Millar Closes: https://bugs.gentoo.org/715202 Closes: https://github.com/dell/libsmbios/issues/89 Signed-off-by: Lars Wendler --- Makefile-std | 4 ++-- src/python/Makefile.am | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile-std b/Makefile-std index 7ac6fa26..dd30d680 100644 --- a/Makefile-std +++ b/Makefile-std @@ -38,7 +38,7 @@ install-data-hook: file=$(DESTDIR)/$$i ;\ for var in $(REPLACE_VARS) ;\ do \ - perl -p -i -e "s|^$$var\s*=.*|$$var=\"$${!var}\"|" $$file;\ + var="$$var" perl -p -i -e 's|^\Q$$ENV{var}\E\s*=.*|$$ENV{var}="$$ENV{$$ENV{var}}"|' $$file;\ done ;\ done @@ -48,7 +48,7 @@ install-exec-hook: file=$(DESTDIR)/$$i ;\ for var in $(REPLACE_VARS) ;\ do \ - perl -p -i -e "s|^$$var\s*=.*|$$var=\"$${!var}\"|" $$file;\ + var="$$var" perl -p -i -e 's|^\Q$$ENV{var}\E\s*=.*|$$ENV{var}="$$ENV{$$ENV{var}}"|' $$file;\ done ;\ done diff --git a/src/python/Makefile.am b/src/python/Makefile.am index 693b6d9d..6aca9688 100644 --- a/src/python/Makefile.am +++ b/src/python/Makefile.am @@ -29,5 +29,5 @@ src/python/_vars.py: src/python/libsmbios_c/_vars.py configure Makefile config. cp $< $@ for var in $(REPLACE_VARS) ;\ do \ - perl -p -i -e "s|^$$var\s*=.*|$$var=\"$${!var}\"|" $@;\ + var="$$var" perl -p -i -e 's|^\Q$$ENV{var}\E\s*=.*|$$ENV{var}="$$ENV{$$ENV{var}}"|' $@;\ done