Support us

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, их нужно заменить указателем одного из новых типов.

16 лет dev.by — «дефолтный» источник информации о беларусском ИТ

Вы можете...

Читайте также
10 курсов по SQL для лучшего понимания работы с большими данными (май, 2023)
10 курсов по SQL для лучшего понимания работы с большими данными (май, 2023)
10 курсов по SQL для лучшего понимания работы с большими данными (май, 2023)
Собрали 10 платных и бесплатных онлайн-курсов для изучения SQL. Программы рассчитаны на слушателей, которые только начинают или продолжают знакомство с языком.
10 способов научиться программировать самостоятельно
10 способов научиться программировать самостоятельно
10 способов научиться программировать самостоятельно
Хотите научиться кодить и освоить алгоритмы? Собрали десять советов с чего начать изучение программирования для тех, кто только начинает своё путешествие в мир программирования и снабдили все это полезными ссылками на курсы для начинающих программистов.
Sony не может договориться с Microsoft о продлении выпуска Call of Duty на PlayStation
Sony не может договориться с Microsoft о продлении выпуска Call of Duty на PlayStation
Sony не может договориться с Microsoft о продлении выпуска Call of Duty на PlayStation
1 комментарий
Microsoft запустила обучающий сайт по Java
Microsoft запустила обучающий сайт по Java
Microsoft запустила обучающий сайт по Java
1 комментарий

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

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.