Автор: David Chisnall.
Оригинальное название: «Writing Insecure C».
Оригинал статьи: Part 1, Part 2, Part 3 (в данной редакции все три части объединены).
Перевод на русский: n0xi0uzz.
Оригинал перевода: http://netsago.org/ru/docs/1/14/
Коррекция и форматирование: Клуб программистов «Весельчак У».
Публикуется с разрешения автора перевода.
Содержание. Введение.
Проверка ошибок.
Начальные значения.
Проблемы целых.
Проблемы с памятью.
Буферы и строки.
Когда все идет не так.
Отказ от привилегий.
Разгоняя ядро.
Заключение. Введение. Использование языка программирования Си часто приводит к написанию очень опасного кода. Но это не совсем справедливое обвинение. Такие проекты, как OpenBSD, показывают, что возможно писать безопасный код на Си. Проблема Си та же, что и в ассемблере — язык открывает вам не только все возможности архитектуры, но и кое-что ещё. Он дает все возможности для написания безопасного кода, но не делает эти вещи сам.
В этой статье рассмотрены стандартные примеры ошибок в коде Си и то, как их и избежать.
Оригинальное название: «Writing Insecure C».
Оригинал статьи: Part 1, Part 2, Part 3 (в данной редакции все три части объединены).
Перевод на русский: n0xi0uzz.
Оригинал перевода: http://netsago.org/ru/docs/1/14/
Коррекция и форматирование: Клуб программистов «Весельчак У».
Публикуется с разрешения автора перевода.
Содержание. Введение.
Проверка ошибок.
Начальные значения.
Проблемы целых.
Проблемы с памятью.
Буферы и строки.
Когда все идет не так.
Отказ от привилегий.
Разгоняя ядро.
Заключение. Введение. Использование языка программирования Си часто приводит к написанию очень опасного кода. Но это не совсем справедливое обвинение. Такие проекты, как OpenBSD, показывают, что возможно писать безопасный код на Си. Проблема Си та же, что и в ассемблере — язык открывает вам не только все возможности архитектуры, но и кое-что ещё. Он дает все возможности для написания безопасного кода, но не делает эти вещи сам.
В этой статье рассмотрены стандартные примеры ошибок в коде Си и то, как их и избежать.