Bug in xbps-create when a relative symlink point to an absolute symlink
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 38/100
Direção de pesquisa
Start by running the supplied reproduction script and inspect xbps-create's symlink handling around readlink and realpath. Compare the generated files.plist with the package contents, then verify that the corrected metadata lets xbps-remove remove both symlinks without truncating the target path.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Simple script to reproduce
#! /bin/sh
set -e
PKGVER=bug-1_1
ARCH=x86_64
DESC="Package to show a bug in xbps-create"
DESTDIR=/tmp/bug-1
mkdir -p $DESTDIR/etc/A
ln -s /etc/os-release $DESTDIR/etc/abs
ln -s ../abs $DESTDIR/etc/A/rel
xbps-create --arch "$ARCH" --desc "$DESC" --pkgver "$PKGVER" $DESTDIR
After running this script you'll end up with a badly formed package. Contents are ok:
$ tar tvf bug-1_1.x86_64.xbps
-rw-r--r-- root/root 503 1969-12-31 21:00 ./props.plist
-rw-r--r-- root/root 744 1969-12-31 21:00 ./files.plist
lrwxrwxrwx 0/0 0 2021-11-28 20:06 ./etc/abs -> /etc/os-release
lrwxrwxrwx 0/0 0 2021-11-28 20:06 ./etc/A/rel -> ../abs
But files.plist is wrong:
$ tar xOf bug-1_1.x86_64.xbps ./files.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>dirs</key>
<array>
<dict>
<key>file</key>
<string>/etc</string>
</dict>
<dict>
<key>file</key>
<string>/etc/A</string>
</dict>
</array>
<key>links</key>
<array>
<dict>
<key>file</key>
<string>/etc/A/rel</string>
<key>mtime</key>
<integer>1638140801</integer>
<key>target</key>
<string>lease</string>
</dict>
<dict>
<key>file</key>
<string>/etc/abs</string>
<key>mtime</key>
<integer>1638140801</integer>
<key>target</key>
<string>/etc/os-release</string>
</dict>
</array>
</dict>
</plist>
What is going on I think is:
- the file in destdir
/etc/A/relis a symlink andreadlinkgives../abswhich is understood to be relative since it starts with. - the filename is then canonicalized (using realpath) to
/etc/os-release - since the symlink was thought to be relative, this is expected to be inside destdir
- hence we drop the destdir prefix
/tmp/bug-1, that's 10 characters so/etc/os-releaseminus 10 characters giveslease
This actually bit us in the wip sagemath package. The net result is that those symlinks that are badly reported in files.plistare not removed by xbps-remove.
I've since made a workaround in the sagemath package so this won't affect us, but it'd be nice to fix this logic (whiich is kind of hard to understand), at the very least check that the prefix for the link is indeed the destdir before droping it naively and complain if not.
All of this is affected by whether the canonicalized path is actually an existing file; that's why I chose /etc/os-release which should always exist (if this file is not there, the bug doesn't trigger).
- Linguagem predominante
- C
- Estrelas
- 1.2k
- Forks
- 152
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de void-linux/xbps
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 68/100
void-linux/xbps#475 ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
void-linux/xbps#701 ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
void-linux/xbps#700 ·
-
xbps-query -RX repository overridesTalvez já em andamento @outofsyncrs assumiu há 31 dias. Abertabug
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
void-linux/xbps#696 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 52/100
void-linux/xbps#695 · 7 comentários ·
Todas as issues de void-linux/xbps
Issues semelhantes
-
[sqlcipher] update to 4.19.0Abertacategory:port-update
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 2 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
mypaint/libmypaint#209 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
[LOGO] Keenetic OSTalvez já em andamento @Ivan-Alone assumiu hoje. Abertalogo request
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
fastfetch-cli/fastfetch#2646 ·
Mantenedores costumam responder em até 1 dia
-
rc_runtime_activate_richpresence leaves a half-initialised entry when the buffer allocation failsAberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
RetroAchievements/rcheevos#558 ·