Re: libcrypt / glibc bug?
On Thu, 4 Feb 2016, gr tertychnyi wrote: да, валится. указатели не проверяются на NULL ни в glibc , ни в newlib. Не совсем в тему, но вот только недавно встретилась лекция Тони Хо́ар Sir Charles Antony Richard Hoare: Null References: The Billion Dollar Mistake http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare Так же любопытная статья на ту же тему: https://www.lucidchart.com/techblog/2015/08/31/the-worst-mistake-of-computer-science/ Ю.
Re: libcrypt / glibc bug?
да, валится. указатели не проверяются на NULL ни в glibc , ни в newlib. -- Григорий > On Feb 4, 2016, at 19:30, Anatoly Pugachev wrote: > > Коллеги, здравствуйте! > > А у всех strcmp валится в sigserv , если ему одним из параметров дать > значение NULL ? > > взято из configure в php-7.x : > > $ cat conftest.c > #include > #include > #include > int main() { > exit (strcmp((char > *)crypt("rasmuslerdorf","_J9..rasm"),"_J9..rasmBYk8r9AiWNc")); > } > > $ gcc -lcrypt conftest.c > > Спасибо.
Re: libcrypt / glibc bug?
Anatoly Pugachev -> Debian рассылка @ Thu, 4 Feb 2016 20:30:02 +0300: AP> Коллеги, здравствуйте! AP> А у всех strcmp валится в sigserv , если ему одним из параметров дать AP> значение NULL ? За всех не поручусь, но исходя из логики того, как пишутся самые низкоуровневые функции в C - да, имеет право. Самые низкоуровневые функции не проверяют тщательно свои параметры - иначе их использование будет состоять в основном из дублирующихся проверок. AP> взято из configure в php-7.x : AP> $ cat conftest.c AP> #include AP> #include AP> #include AP> int main() { AP> exit (strcmp((char AP> *)crypt("rasmuslerdorf","_J9..rasm"),"_J9..rasmBYk8r9AiWNc")); AP> } AP> $ gcc -lcrypt conftest.c Ну, мягко говоря, употребление crypt() в приведенном коде далеко от документированного: salt is a two-character string chosen from the set [a-zA-Z0-9./]. This string is used to perturb the algorithm in one of 4096 different ways. Так что, я бы сказал, crypt() тут вправе вернуть NULL со всеми вытекающими. И тут уже неважно, sigsegv в strcmp или просто не сойдется сравнение.
Re: libcrypt / glibc bug?
2016-02-04 20:30 GMT+03:00 Anatoly Pugachev : > Коллеги, здравствуйте! > > А у всех strcmp валится в sigserv , если ему одним из параметров дать > значение NULL ? > > взято из configure в php-7.x : > > $ cat conftest.c > #include > #include > #include > int main() { > exit (strcmp((char > *)crypt("rasmuslerdorf","_J9..rasm"),"_J9..rasmBYk8r9AiWNc")); > } > > $ gcc -lcrypt conftest.c > > извините, забыл написать, у меня в sid на sparc64 валится: root@deb4g:/srv/1/php-7.0.2# dpkg -l libc6 ii libc6:sparc64 2.21-7 sparc64 GNU C Library: Shared libraries и на fc23 x86_64 тоже: [mator@node01 ~]$ gcc -lcrypt conftest.c [mator@node01 ~]$ ./a.out Segmentation fault (core dumped) [mator@node01 ~]$ rpm -q glibc glibc-2.22-7.fc23.x86_64