From: Alexey Gladkov <legion@altlinux.ru>
To: sisyphus@lists.altlinux.org
Subject: Re: [sisyphus] Вопрос по os-release
Date: Thu, 28 Feb 2013 15:59:26 +0400
Message-ID: <512F469E.9070102@altlinux.ru> (raw)
In-Reply-To: <512F4102.1000505@etersoft.ru>
28.02.2013 15:35, Pavel Vainerman wrote:
>> У паранои должны быть пределы иначе можно перестать доверять выводу
>> системных утилит и содержимому конфигов.
> согласен.. при условии (того, что вы написали ниже).
Я продемонстрирую почему я так толсто троллингово возмущаюсь:
$ dd if=/dev/urandom of=/tmp/badfile count=1 bs=512
$ cat /tmp/test.sh
#!/bin/sh -efu
. /tmp/badfile || echo "BAD FILE"
echo "END"
$ /tmp/test.sh
/tmp/badfile: line 1: unexpected EOF while looking for matching ``'
$ echo "Foo bar baz" > /tmp/badfile
$ LANG=C /tmp/test.sh
/tmp/badfile: line 1: Foo: command not found
Шеллы могут быть любыми, но результат будет один: синтаксическая ошибка.
Таким образом нарушается базовое условие формата этого конфига и
обработать такой сорс можно только через subshell:
$ cat /tmp/test.sh
#!/bin/sh -efu
( . /tmp/badfile ) || echo "BAD FILE"
echo "END"
$ /tmp/test.sh
/tmp/zzz: line 1: Foo: command not found
BAD FILE
END
Но в этом случае переменные из этого конфига не забрать простым
способом и это всё равно, что выуживать их sed'ом по одной. Как раз
этого хотели избежать создатели формата этого файла.
А учитывая, что формат допускает вот такие конструкции:
Example: NAME=Fedora or NAME="Debian GNU/Linux".
получение значений sed'ом делается ещё более весёлой задачей.
> если из этого сообщения будет понятно что битый файл os-release
> (ну или что где то в нём ошибка)..
Как я показал выше показать что именно файл битый можно, но выглядеть
эта проверка будет очень забавно. Безусловно я добавлю её раз возник
прецедент с записью туда мусора.
--
Rgrds, legion
next prev parent reply other threads:[~2013-02-28 11:59 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-28 5:30 Sergei Epiphanov
2013-02-28 7:11 ` Alexey Gladkov
2013-02-28 8:12 ` Vladimir Lettiev
2013-02-28 10:26 ` Андрей Черепанов
2013-02-28 10:06 ` Sergei Epiphanov
2013-02-28 10:25 ` Alexey Gladkov
2013-02-28 10:29 ` Michael Shigorin
2013-02-28 11:15 ` Alexey Gladkov
2013-02-28 11:19 ` Pavel Vainerman
2013-02-28 11:30 ` Alexey Gladkov
2013-02-28 11:35 ` Pavel Vainerman
2013-02-28 11:59 ` Alexey Gladkov [this message]
2013-02-28 12:03 ` Pavel Vainerman
2013-02-28 12:26 ` Alexey Gladkov
2013-02-28 12:57 ` Pavel Vainerman
2013-03-01 16:50 ` Dmitry V. Levin
2013-02-28 12:16 ` Michael Shigorin
2013-02-28 11:52 ` Aleksey Novodvorsky
2013-02-28 13:35 ` Sergei Epiphanov
2013-02-28 13:34 ` Sergei Epiphanov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=512F469E.9070102@altlinux.ru \
--to=legion@altlinux.ru \
--cc=sisyphus@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Sisyphus discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
public-inbox-index sisyphus
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sisyphus
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git