]> Sergey Matveev's repositories - stargrave-blog.git/commit
NTPsec hacking guide
authorSergey Matveev <stargrave@stargrave.org>
Tue, 13 Apr 2021 14:00:47 +0000 (17:00 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Tue, 13 Apr 2021 14:00:47 +0000 (17:00 +0300)
commitff6a9471893f36239414d7c2c770cfea4b262099
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parentf9d002bbcbc6de7f282c5f6130199263aa94a6c1
NTPsec hacking guide

Полез я ради любопытства в hacking guide NTPsec проекта, в котором Эрик
Реймонд является главным архитектором и программистом. Полез то ради
запрещённых к применению действий, типа использования не reentrant
функций и всяких sprintf. Ничего нового не увидел.

Но (в блоге каком-то прочитал) что одно из первых действий что они
сделали это переводили int-ы на C99-style bool-ы. Я вот всякие проекты,
в том числе suckless guide, видел где C99 это минимум, но при этом они
bool не используют. Ну почему? Какого чёрта!? ESR молодец!

Ну а от чего в восторге это от требования всегда и везде расставлять
фигурные скобки, даже там где не обязательно (if (smth) action;). Чуть
ли не везде я вижу что люди опускают в подобных if-ах скобки и даже
боязно спрашивать зачем. Ведь это же жутко неудобно когда надо вставить
какую-то отладку или breakpoint в отладчике и для вставки ещё одного
action уже надо расставлять эти скобки. Go язык молодец: он аналогично
обязывает и точка. Ну и ESR молодец! Хотя он и упоминает что это ещё
может быть полезно для того чтобы проще сконвертировать код в Go.

Также намекает на использование stdint.h типов для int-ов, когда
возникает вопрос достаточной ли длины "просто" тип int. И что нельзя
делать предположения о знаке у char-ов. Вроде бы очевидно, но я тьму
кода вижу который плевать на всё это ходил.