[pacman-dev] [PATCH v3 1/2] makepkg: don't let the strip routine mess up file attributes
Allan McRae
allan at archlinux.org
Mon Feb 8 04:24:08 UTC 2021
On 8/2/21 2:09 pm, Eli Schwartz wrote:
> It updates the stripped/objcopied file by creating a temp file,
> chown/chmodding it, and replacing the original file. But upstream
> binutils has CVE-worthy issues with this if running strip as root, and
> some recent versions of strip don't play nicely with fakeroot.
>
> Also, this has always destroyed xattrs. :/
>
> Sidestep the issue by telling strip/objcopy to write to a temporary
> file, and manually dump the contents of that back into the original
> binary. Since the original binary is intact, albeit with different
> contents, it retains its correct attributes in fakeroot.
>
> Signed-off-by: Eli Schwartz <eschwartz at archlinux.org>
> ---
>
> v3: use mktemp to prevent clobbering mysterious packaged *.temp files
>
Thanks - this version is good.
> scripts/libmakepkg/tidy/strip.sh.in | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/libmakepkg/tidy/strip.sh.in b/scripts/libmakepkg/tidy/strip.sh.in
> index 868b96f3b..9cb0fd8d0 100644
> --- a/scripts/libmakepkg/tidy/strip.sh.in
> +++ b/scripts/libmakepkg/tidy/strip.sh.in
> @@ -69,7 +69,10 @@ strip_file() {
> # copy debug symbols to debug directory
> mkdir -p "$dbgdir/${binary%/*}"
> objcopy --only-keep-debug "$binary" "$dbgdir/$binary.debug"
> - objcopy --add-gnu-debuglink="$dbgdir/${binary#/}.debug" "$binary"
> + local tempfile=$(mktemp "$binary.XXXXXX")
> + objcopy --add-gnu-debuglink="$dbgdir/${binary#/}.debug" "$binary" "$tempfile"
> + cat "$tempfile" > "$binary"
> + rm "$tempfile"
>
> # create any needed hardlinks
> while IFS= read -rd '' file ; do
> @@ -93,7 +96,11 @@ strip_file() {
> fi
> fi
>
> - strip $@ "$binary"
> + local tempfile=$(mktemp "$binary.XXXXXX")
> + if strip "$@" "$binary" -o "$tempfile"; then
> + cat "$tempfile" > "$binary"
> + fi
> + rm -f "$tempfile"
> }
>
>
> --
> 2.30.0
> .
>
More information about the pacman-dev
mailing list