LINUX.ORG.RU

Парсинг PATH и т.п. внутри glibc


0

0

Вот я одно место в коде не понимаю, точнее, в поведении либц.

/* `strsep' can pass an empty string. This has to be
interpreted as `use the current directory'. */
if (len == 0)
{
static const char curwd[] = "./";
cp = (char *) curwd;
}

Вот если мы в PATH, LD_PRELOAD и т.п. добавим ::, то оно прочитается как ./

Да это ещё и специальный случай! Зачем? Не лучше ли пустые строки просто игнорировать, а весь софт, который из-за этого ломается, научить добавлять туда :.: по-человечески?

Кто-нибудь знает, зачем это сделали именно так?

★★★★

Поясню: если вы напишете PATH=$PATH:$SOMEPATH, а SOMEPATH у вас не определено -- получится, что вы добавили в PATH текущий каталог. Что не есть гуд.

lodin ★★★★
() автор топика
Ответ на: комментарий от lodin

Файлик, откуда код, elf/dl-load.c называется.

lodin ★★★★
() автор топика
Ответ на: комментарий от lodin

>Поясню: если вы напишете PATH=$PATH:$SOMEPATH, а SOMEPATH у вас не определено -- получится, что вы добавили в PATH текущий каталог. Что не есть гуд.

Не знаю, почему так сделано, но так и есть. Некоторое время назад об этом новость была на лоре - дебьяновцы жаловались, что это может быть потенциальной дыркой.

Laz ★★★★★
()

PATH - зло, нужно всё биндить в /bin, единственно забитый в бинарники :)

P.S.: ... план ... Plan9 :)

robot12 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.