On Mon, Jun 27, 2005 at 01:03:25PM +0400, Epiphanov Sergei wrote: > В сообщении от 27 Июнь 2005 11:57 Alexey Tourbin написал: > > > Сейчас правило для имплицитного включения tain mode выглядит так: > > > perl.c:    PL_tainting |= (PL_uid && (PL_euid != PL_uid || PL_egid != > > > PL_gid)); > > > > > > Предлагается добавить в условие PL_euid==0 || ... > > > > Забыл сказать, что будет такой же workaround, какой сейчас существует. > Хм, сейчас я могу выбрать, включать или нет этот режим. В Вашем случае > волей-неволей придётся ломать голову над каждой инструкцией. Можно запустить с опцией -t (enable tainting warnings), она "перебивает" опцию -T (enable tainting checks). Об этом лучше никому не говорить. :) > Например, рабочий скрипт вида: > > #!/usr/bin/perl > foreach $l(@ARGV){ > system("/usr/bin/команда '$l'"); > } Рабочий? То есть он берёт произвольные аргументы с командной строки и передаёт их shell'у для выполнения? Вот смотрите: $ cat test.pl #!/usr/bin/perl foreach $l(@ARGV){ print "/usr/bin/команда '$l'\n"; } $ perl test.pl arg /usr/bin/команда 'arg' $ perl test.pl arg\'\;rm\ -rf\ \'/ /usr/bin/команда 'arg';rm -rf '/' $ Квотирование -- это вообще некое неприятное место как в шелле, так и в перле (отчасти вследствие шелла). > и притом, что я знаю, что это за 'команда' и что получу в результате, всё > равно скрипт придётся обвешивать бог знает чем. Для скриптов, которые я хоть > как-то задействую в управлении сервером, я обязательно пишу параметр -T. Вы, > когда пишите '/bin/cat "file"', не проверяете file на "вшивость". Хотя > знаете, что нетекстовый файл может привести к сбою шрифтов консоли. Так же и > я пишу на Perl. Ох, я не использую /bin/cat, я использую $ perl -MConfig -le 'print $Config{pager}' /usr/bin/less -isR $