[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