Microsoft открыла исходники Checked C

Оставить комментарий
Microsoft открыла исходники Checked C

Исследовательский центр Microsoft Research открыл исходники проекта Checked C — расширения языка программирования С, которое упрощает разработку программ без уязвимостей, связанных с переполнением буфера, выходом за границы массива, некорректным приведением типа и другими нарушениями безопасности памяти, сообщает Хакер.ru.

Читать далее...

Уязвимости такого рода особенно характерны для С и C++, потому что эти языки разрешают обращаться к произвольным адресам и вручную пересчитывать значения указателей.

Забота об осмысленности этих вычислений и допустимости выполняемых операций с памятью полностью ложится на плечи разработчика. Неизбежный результат — труднозаметные ошибки в любой достаточно сложной программе. В лучшем случае они ведут к сбоям и неверной работе, в худшем — оставляют лазейки, которыми могут воспользоваться злоумышленники.

Checked С даёт программисту средства, позволяющие лучше описать, каким образом предполагается использовать указатели и где именно располагаются данных. Допустимость операций с памятью проверяется как во время исполнения программы, так и на стадии компиляции.

Язык вводит три новые разновидности указателей в дополнение к обычным указателям С.

  • ptr<T> — указатель на тип T, который не нуждается в проверке выхода за границы массива. Такие указатели нельзя использовать для вычисления новых адресов.
  • array_ptr<T> — указатель на элемент массива, состоящего из значений типа T. Адресная арифметика с этой разновидностью указателей разрешена, но разработчик должен сам следить за тем, чтобы результат вычислений не оказался за пределами массива.
  • span<T> — указатель, хранящий информацию о величине массива и избегающий выхода за его пределы во время исполнения программы. При взаимодействии с С он приводится к типу array_ptr.

Все три новых указателя не могут иметь нулевое значение, когда их используют для обращения к памяти.

Язык расширен таким образом, чтобы упростить постепенный перевод на Checked C уже существующих разработок. Поскольку нововведения не распространяются на классические указатели, существующие программы на С продолжат работать, как прежде. Чтобы задействовать возможности Checked C, их нужно заменить указателем одного из новых типов.

Хотите сообщить важную новость?

Пишите в наш Телеграм

Горячие события

Вебинар «Советы от рекрутеров: как найти квалифицированную работу в Европе»
4 июня

Вебинар «Советы от рекрутеров: как найти квалифицированную работу в Европе»

Тренинг Professional Scrum Master I (PSM I) Online
4 июня — 5 июня

Тренинг Professional Scrum Master I (PSM I) Online

Минск
 Туториал: новые фичи CatBoost
4 июня

Туториал: новые фичи CatBoost

Читайте также

Уже второй немецкий город планирует переходить на открытое ПО
Уже второй немецкий город планирует переходить на открытое ПО

Уже второй немецкий город планирует переходить на открытое ПО

Microsoft заменяет журналистов искусственным интеллектом
Microsoft заменяет журналистов искусственным интеллектом

Microsoft заменяет журналистов искусственным интеллектом

2 комментария
Вышел отчёт 2020 Developer Survey от Stack Oveflow
Вышел отчёт 2020 Developer Survey от Stack Oveflow

Вышел отчёт 2020 Developer Survey от Stack Oveflow

Майское обновление Windows 10 — с улучшенным блокнотом и встроенным ядром Linux
Майское обновление Windows 10 — с улучшенным блокнотом и встроенным ядром Linux

Майское обновление Windows 10 — с улучшенным блокнотом и встроенным ядром Linux

6 комментариев

Обсуждение

Комментариев пока нет.
Спасибо! 

Получать рассылки dev.by про белорусское ИТ

Что-то пошло не так. Попробуйте позже