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 <crypt.h> AP> #include <stdlib.h> AP> #include <string.h> 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 или просто не сойдется сравнение.