LINUX.ORG.RU

История изменений

Исправление liksys, (текущая версия) :

И правда, зачем проверять код его возврата? Там он и не проверяется.

Затем, что функция может зафейлиться по целому ряду причин, и дальше программа пойдет ломать валидные данные, прежде чем свалится в сегфолт (если повезет). А если нет - вот у тебя классическое место для потенциальных уязвимостей разного рода.

Отдельным пунктом хочу заметить, что отсутствие обработки ошибок - признак действительно низкой культуры разработки даже не с точки зрения корректности, а банальной эксплуатации. Вот упала у тебя софтина, в логах ты видишь сегфолт. Что произошло? Почему? Предлагается на каждый такой чих читать кордамп? Любая ошибка должна быть обработана и сопровождена максимумом возможной информации, относящейся к проблеме. Если не открылся файл - дай его имя и покажи errno, желательно текстом. Не выделилась память - хотя бы вылети в ассерте.

А еще код никогда не должен работать в неопределенных условиях, потому что это влечет риск уязвимостей или порчи данных. Между выбором «делать что-то странное» и «упасть», следует всегда выбирать второе.

Поскольку @Croco теоретик, он либо не знает эти правила, либо игнорирует их, считая себя самым умным. Я у него, скорее всего, в игноре, так что донесите ему кто-нибудь этот пост, пожалуйста. Попробуем научить его программировать нормально %)

Исходная версия liksys, :

И правда, зачем проверять код его возврата? Там он и не проверяется.

Затем, что функция может зафейлиться по целому ряду причин, и дальше программа пойдет ломать валидные данные, прежде чем упадет.

Отдельным пунктом хочу заметить, что отсутствие обработки ошибок - признак действительно низкой культуры разработки даже не с точки зрения корректности, а банальной эксплуатации. Вот упала у тебя софтина, в логах ты видишь сегфолт. Что произошло? Почему? Предлагается на каждый такой чих читать кордамп?

Любая ошибка должна быть обработана и сопровождена максимумом возможной информации, относящейся к проблеме. Если не открылся файл - дай его имя и покажи errno, желательно текстом. Не выделилась память - хотя бы вылети в ассерте.

А еще код никогда не должен работать в неопределенных условиях, потому что это влечет риск уязвимостей или порчи данных. Между выбором «делать что-то странное» и «упасть» следует всегда выбирать второе.

Поскольку @Croco теоретик, он либо не знает эти правила, либо игнорирует их, считая себя самым умным. Я у него, скорее всего, в игноре, так что донесите ему кто-нибудь этот пост, пожалуйста. Попробуем научить его программировать нормально %)