[devel] Fwd: [git update] packages/test-glob-req: heads/master
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Сб Сен 8 23:52:57 MSD 2007
On Sat, Sep 08, 2007 at 09:50:46PM +0300, Michael Shigorin wrote:
> On Sat, Sep 08, 2007 at 07:49:15PM +0400, Alexey Tourbin wrote:
> > Кто интересуется автоматическим поиском зависимостей,
> > советую склонировать этот пакет и запустить gear --rpm -- rpm -bb
> > Ну и ясное дело изучить зависимости собравшегося пакета.
>
> Прикольненько =)
В шелле есть word splitting, после которого автоматически выполняется
глоб (не помню как это по-научному называется). Отделить одно от
другого более-менее нельзя.
$ files='/lib/libc-* /lib/libpthread-*'
$ for f in $files; do echo "$f"; done
/lib/libc-2.5.so
/lib/libpthread-2.5.so
$
Это фактически значит, что переменную с untrusted data нельзя писать
без кавычек, иначе, помимо желаемого разбиения на слова также будет
сделан глоб. Единственный способ не делать глоб -- это запускать
скрипты в режиме -f ("#!/bin/sh -f" или "set -f").
Кстати, в zsh ни word splitting, ни глоб по умолчанию не выполняются,
так что переменные вообще квотить не нужно. А splitting или глоб нужно
специально просить, тот или другой, или оба вместе.
Кстати щас возможностей для подтасовок слишком много.
$ cat test.sh
\ a
' a'
$ sh --rpm-requires test.sh
executable(\ a)
executable(' a')
$ /usr/lib/rpm/shell.req test.sh
shell.req: /home/at/test.sh: ' not found (skip)
shell.req: /home/at/test.sh: a' not found (skip)
shell.req: /home/at/test.sh: \ not found (skip)
shell.req: /home/at/test.sh: a not found (skip)
$
Думаю как бы накрыть всё это разом. Кажется, как следует сделать всё
равно ничего не получится. Но хотя бы отсечь заведомо дурные варианты.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20070908/f0c84794/attachment-0002.bin>
Подробная информация о списке рассылки Devel