[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] install: support stripping files with a leading hyphen
From: |
Pádraig Brady |
Subject: |
[PATCH] install: support stripping files with a leading hyphen |
Date: |
Fri, 21 Apr 2023 19:14:45 +0100 |
* src/install.c (strip): Prepend "./" to file names with a leading "-".
* tests/install/strip-program.sh: Add a test case.
* NEWS: Mention the bug fix.
Reported in https://bugs.debian.org/1034429
---
NEWS | 6 ++++++
src/install.c | 9 +++++++--
tests/install/strip-program.sh | 10 +++++++++-
3 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/NEWS b/NEWS
index 21129c8fc..8edfa8080 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,12 @@ GNU coreutils NEWS -*-
outline -*-
* Noteworthy changes in release ?.? (????-??-??) [?]
+** Bug fixes
+
+ install --strip now supports installing to files with a leading hyphen.
+ Previously such file names would have caused the strip process to fail.
+ [This bug was present in "the beginning".]
+
* Noteworthy changes in release 9.3 (2023-04-18) [stable]
diff --git a/src/install.c b/src/install.c
index 3aa6ea92b..272dfcb8f 100644
--- a/src/install.c
+++ b/src/install.c
@@ -502,8 +502,13 @@ strip (char const *name)
error (0, errno, _("fork system call failed"));
break;
case 0: /* Child. */
- execlp (strip_program, strip_program, name, NULL);
- die (EXIT_FAILURE, errno, _("cannot run %s"), quoteaf (strip_program));
+ {
+ char const *safe_name = name;
+ if (name && *name == '-')
+ safe_name = file_name_concat (".", name, NULL);
+ execlp (strip_program, strip_program, safe_name, NULL);
+ die (EXIT_FAILURE, errno, _("cannot run %s"), quoteaf (strip_program));
+ }
default: /* Parent. */
if (waitpid (pid, &status, 0) < 0)
error (0, errno, _("waiting for strip"));
diff --git a/tests/install/strip-program.sh b/tests/install/strip-program.sh
index 0a702f7fa..1b7de52a2 100755
--- a/tests/install/strip-program.sh
+++ b/tests/install/strip-program.sh
@@ -27,7 +27,6 @@ sed s/b/B/ \$1 > \$1.t && mv \$1.t \$1
EOF
chmod a+x b || framework_failure_
-
echo abc > src || framework_failure_
echo aBc > exp || framework_failure_
ginstall src dest -s --strip-program=./b || fail=1
@@ -37,4 +36,13 @@ compare exp dest || fail=1
returns_ 1 ginstall src dest2 -s --strip-program=./FOO || fail=1
test -e dest2 && fail=1
+# Ensure naked hyphens not passed
+cat <<EOF > no-hyphen || framework_failure_
+#!$SHELL
+printf -- '%s\\n' "\$1" | grep '^[^-]'
+EOF
+chmod a+x no-hyphen || framework_failure_
+
+ginstall -s --strip-program=./no-hyphen -- src -dest || fail=1
+
Exit $fail
--
2.26.2
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] install: support stripping files with a leading hyphen,
Pádraig Brady <=