[PATCH] makepkg: Handle invalid files in strip

Morten Linderud foxboron at archlinux.org
Sun Jan 2 00:33:25 UTC 2022


On Sat, Jan 01, 2022 at 07:45:33PM +0100, Xiretza wrote:
> On 01/01/2022 18.51, Morten Linderud wrote:
> > From: Morten Linderud <morten at linderud.pw>
> > 
> > makepkg does a fairly naive pass on the DWARF files to generate source
> > files. If this is done on things like Golang it will give strip a list
> > of files that are truncated paths or completely invalid virtual paths
> > for the runtime to interpret.
> > 
> > We also explicitly only allow source files that contains the given debug
> > source directory. We depend on this for file lookup and it would produce
> > invalid packages with weird paths if they are not present.
> > 
> > Signed-off-by: Morten Linderud <morten at linderud.pw>
> > ---
> >   scripts/libmakepkg/tidy/strip.sh.in | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/scripts/libmakepkg/tidy/strip.sh.in b/scripts/libmakepkg/tidy/strip.sh.in
> > index 92a6fb15..d9eb8a95 100644
> > --- a/scripts/libmakepkg/tidy/strip.sh.in
> > +++ b/scripts/libmakepkg/tidy/strip.sh.in
> > @@ -60,11 +60,11 @@ strip_file() {
> >   		while IFS= read -r t; do
> >   			file=${t/${dbgsrcdir}/"$srcdir"}
> >   			dest="${dbgsrc/"$dbgsrcdir"/}$t"
> > -			if ! [[ -f $dest ]]; then
> > +			if [[ -f "$file" ]] && ! [[ -f $dest ]]; then
> >   				mkdir -p "${dest%/*}"
> >   				cp -- "$file" "$dest"
> >   			fi
> > -		done < <(source_files "$binary")
> > +		done < <(source_files "$binary" | grep "$dbgsrcdir")
> >   		# copy debug symbols to debug directory
> >   		mkdir -p "$dbgdir/${binary%/*}"
> 
> This also removes any warning in case -fdebug-prefix-map= fails to work (e.g.
> because of upstream build scripts overriding CFLAGS) and just results in a
> debug package without any source files. Maybe it would be better to
> unconditionally look at every source file path, and:
> 
> 1) if it's rooted in $dbgsrcdir, do the copy
> 2) otherwise, if it's rooted in $srcdir (because the prefix mapping didn't work), warn/error
> 3) otherwise, skip (it's a mangled filename without any useful meaning)
> 
> -xiretza

I think this was a bit naive indeed. However, unless someone is against
debugedit I think that patch set supersedes this one and probably solves a few
of these issues?

-- 
Morten Linderud
PGP: 9C02FF419FECBE16
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.archlinux.org/pipermail/pacman-dev/attachments/20220102/bf153e3d/attachment.sig>


More information about the pacman-dev mailing list