From d9a8dfe35de9fbd81cecefffda022ee42e5e7ce9 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sun, 7 Mar 2021 11:54:20 +0300 Subject: [PATCH] =?utf8?q?=D0=A1=D0=BF=D0=B8=D1=81=D0=BA=D0=B8=20=D0=B7?= =?utf8?q?=D0=B0=D0=BF=D1=80=D0=B5=D1=89=D1=91=D0=BD=D0=BD=D1=8B=D1=85=20?= =?utf8?q?=D0=A1=D0=B8=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B9=20?= =?utf8?q?=D0=B2=20git=20=D0=B8=20Microsoft?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit https://news.ycombinator.com/item?id=20792938 https://news.ycombinator.com/item?id=26353025 Вот чего мне не хватало (да и не хватает до сих пор), так это современного источника мудрости по Си. Открываешь старые книжки по Си и видишь что там явно плохие практики, очень опасные. Про всякие штуки типа -ffunction-sections (очень помогающие) или про -fstack-protector-all узнаю чисто случайно. Хотя... может я узнаю про них когда приходит время? И вот я мельком где-то просто видел и слышал что всякие strcpy и strcat являются опасными и не рекомендованными. Но я на Си и не писал прежде. Но а где мне найти вообще подборку хороших практик? Всё что я видел -- сильно разрозненные и не пересекающиеся множества знаний. И вот две ссылки на забаненные функции. И мне они очень понравились тем, что я по сути не узнал ничего нового. Своей головой, читая описания этих функций в man-ах, понимал что или проблемы с thread-safety/reentrancy или с возможностями выхода за границы. Получается что яростно неправильных фунок не так много и я самостоятельно понимал их опасность. Настроение поднимается. А ещё Microsoft удивляет. Недавно вот выяснилось что всякие защиты в софте (5916b1b5c4827dccf0a7ced477a8e7d6de45908f) они применяют очень давно и вроде как довольно активно, поболее чем FreeBSD. Хотя наверное тут и нечему удивляться: ведь у них на порядки больше пользователей. А сейчас приятно удивляет тем, что Microsoft основной потребитель функций из K-appendix-а C11 (12f6e5616982751e2f14a8c01cd503cb55f238ed): функций с _s суффиксом, который типа secure. Хотя они же их и разрабатывают. BSD системы их тоже поддерживают, а в glibc вообще под чистую отсутствует. -- 2.48.1