libmakepkg: Do not "strip" files when the format is not recognised

Message ID 20220511234920.15234-1-allan@archlinux.org
State New
Headers show
Series libmakepkg: Do not "strip" files when the format is not recognised | expand

Commit Message

Allan McRae May 11, 2022, 11:49 p.m. UTC
We use a multi step process during stripping to ensure permissions do
not get changed.  However, if the initial objcopy fails, the subsequent cat
results in a blank file.  Abandon early if objcopy fails.

Fixes FS#74486

Signed-off-by: Allan McRae <allan@archlinux.org>
---
 scripts/libmakepkg/tidy/strip.sh.in | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Patch

diff --git a/scripts/libmakepkg/tidy/strip.sh.in b/scripts/libmakepkg/tidy/strip.sh.in
index 688bcf1b..4cf2107c 100644
--- a/scripts/libmakepkg/tidy/strip.sh.in
+++ b/scripts/libmakepkg/tidy/strip.sh.in
@@ -80,7 +80,12 @@  strip_file() {
 
 		# copy debug symbols to debug directory
 		mkdir -p "$dbgdir/${binary%/*}"
-		objcopy --only-keep-debug "$binary" "$dbgdir/$binary.debug"
+
+		# abandon processing files that are not a recognised format
+		if ! objcopy --only-keep-debug "$binary" "$dbgdir/$binary.debug" 2>/dev/null; then
+			return
+		fi
+
 		local tempfile=$(mktemp "$binary.XXXXXX")
 		objcopy --add-gnu-debuglink="$dbgdir/${binary#/}.debug" "$binary" "$tempfile"
 		cat "$tempfile" > "$binary"