gentoo-ebuilds/app-arch/lrzip/files/fix-incorrect-use-of-shell-commands-in-handmade.patch
Brahmajit Das 22722d7ae7
app-arch/lrzip: fix incorrect use of shell commands in handmade
Closes: https://bugs.gentoo.org/923990
Signed-off-by: Brahmajit Das <listout@listout.xyz>
Part-of: https://github.com/gentoo/gentoo/pull/43192
Closes: https://github.com/gentoo/gentoo/pull/43192
Signed-off-by: Sam James <sam@gentoo.org>
2025-07-28 16:50:12 +01:00

51 lines
2.1 KiB
Diff

https://github.com/ckolivas/lrzip/commit/dc6342ea6151544d1cb8d0d366a97e34ec34e9c6
From: Eli Schwartz <eschwartz@gentoo.org>
Date: Thu, 6 Feb 2025 10:53:48 -0500
Subject: [PATCH] build: fix incorrect use of shell commands in handmade
libtool file
The "echo" command was soft-deprecated from the shell programming
language in ~1992. There is no way to use it correctly if:
- the "-e" or "-n" or "-E" or any other options are used
- backslash escape sequences are used
- the printed string contains shell variables containing either of the
above
In recognition of the fact that echo was historically used in many
scripts, some of which avoided these issues and therefore succeeded when
run, the "echo" command was NOT marked as obsolescent, out of fear that
marking it as obsolescent would lead to vendors removing "echo" entirely
and breaking existing scripts (or at least, the subset of scripts which
managed to work correctly).
However, it is warned against, that after 1992 you should avoid writing
new code that uses "echo" and instead use "printf".
printf has an actual definition of its behavior, which echo did not, and
that behavior is to interpret backslash escapes in the first parameter,
which is necessary by this Makefile.am in order to embed newlines into
the generated libtool file. Simply replacing "echo -e" with "printf"
will therefore correctly and reliably do the intended functionality. We
also add one final embedded newline to avoid producing a file without an
end-of-line character on the last line of the file.
Fixes: https://github.com/ckolivas/lrzip/issues/257
Signed-off-by: Eli Schwartz <eschwartz@gentoo.org>
--- a/lzma/C/Makefile.am
+++ b/lzma/C/Makefile.am
@@ -53,11 +53,12 @@ liblzma_la_LIBADD = $(ASM_7z).lo
\n\# Generated by libtool -- hack to allow asm linking\
\n\# Peter Hyman\
\npic_object='.libs/$(ASM_7z).o'\
-\nnon_pic_object='$(ASM_7z).o'
+\nnon_pic_object='$(ASM_7z).o'\
+\n
$(ASM_7z).lo: $(ASM_S)
$(ASM_PROG) $(ASM_OPT) -o $(ASM_7z).o $(ASM_S)
mkdir -p .libs
cp $(ASM_7z).o .libs/
- @echo -e "$(7ZIPASMLOFILE)" > $(ASM_7z).lo
+ @printf "$(7ZIPASMLOFILE)" > $(ASM_7z).lo
endif