glibc функции и crap

Что: f049e492fbe80e18f7eefa5e33fd926f76237392

Когда: 2021-03-07 12:29:23+03:00

Темы: bsd hate

glibc функции и crap

В продолжение d9a8dfe35de9fbd81cecefffda022ee42e5e7ce9 ещё вспомнил
эпопею с темой про strcat/strcpy. Для них есть strncat/strncpy варианты
(хотя, говорят они никогда не предназначались для безопасной замены
str*). Но которыми сложно пользоваться правильно. Поэтому OpenBSD
изобрела strlcat/strlcpy версии: https://www.sudo.ws/todd/papers/strlcpy.html
которые и удобны и просты и безопасны и быстры.

Конечно же, glibc отверг предложение включить эти функи, ибо это же "BSD crap":
https://sourceware.org/legacy-ml/libc-alpha/2000-08/msg00053.html
Мол нужно всегда знать длину ваших строк:
https://stackoverflow.com/questions/2114896/why-are-strlcpy-and-strlcat-considered-insecure
С одной стороны, конечно, верно. С другой по ссылке верно заметили что
читаемость strl* версий куда лучше. Так можно и про все str* функи было
сказать что это crap и достаточно циклов с memset-ами всяких.

Вот и выходит что в glibc нет ни _s функций, ни strl* и наверное ещё
тьмищи других, ведь опыта то у меня с гулькин нос ещё. Так как всё равно
BSD функи используются активно даже в GNU проектах, то сделали вот такой
вот проект: https://libbsd.freedesktop.org/wiki/
где заприметил всякие {le,be}*{enc,dec} функции, которые я уже как-то
использовал и споткнулся об их отсутствии в glibc. А выбрал я их, читая
man, как самые удобные для использования. А раз так, то конечно же фиг
будут в glibc. А strl* кстати есть в musl -- молодцы!

оставить комментарий

Сгенерирован: SGBlog 0.34.0