2025-04-18 В
-Safe1добавлено принудительное включение санитайзеров, проверяющих, что:- значение типа
boolравно 0 или 1; - при преобразовании значения
floatвintне происходит переполнения; - правый операнд побитового сдвига неотрицателен и меньше ширины типа;
- не происходит знакового переполнения;
- чтение или запись совершаются только по указателю, чей адрес выровнен по размеру операнда;
- нет использования нулевого указателя;
- чтение или запись осуществляется по индексу, не выходящему за пределы массива;
- нет переполнения типа указателя;
- при непрямом вызове сигнатура функции соответствует типу указателя на неё;
- во встроенные функции передаются корректные параметры;
- не передаётся управление коду, помеченному как недостижимый;
- нет деления на ноль или взятия остатка от нуля;
- массив, выделяемый в автоматической памяти, имеет положительный размер;
- значение перечисляемого типа в диапазоне представимых значений этого типа;
- нет использования памяти за пределами объекта.
Поддерживаемые версии: safelang-19
Ветка Версия (дата) safelang-19 12 (2025-04-18) - значение типа
2025-04-18 В
-Safe2добавлено принудительное включение опций, обеспечивающих следующую функциональность:- автоматическая инициализация переменных из автоматической памяти нулями;
- остановка компиляции с ошибкой для предупреждений 3 класса.
Поддерживаемые версии: safelang-19
Ветка Версия (дата) safelang-19 10 (2025-04-18) 2025-04-18 В
-Safe3добавлено принудительное включение опций, обеспечивающих следующую функциональность:- предотвращение оптимизаций, игнорирующих возможность переполнения знаковых целых, совпадения значений указателей разных типов, разыменования нулевого указателя;
- механизм защиты стека;
- генерация позиционно-независимого кода;
- предупреждения о выходе за границы массива, делении на ноль и побитовом сдвиге, правый операнд которого отрицателен либо не меньше размера левого операнда (в битах).
Поддерживаемые версии: safelang-19
Ветка Версия (дата) safelang-19 9 (2025-04-18) 2025-04-18 Добавлена опция
-fhandle-safe-error=, включающая safe exit для функцийsafe-fortify,stack-protector,safe-sanitize. Опция-fhandle-safe-error-handler=позволяет выбрать способ аварийного завершения программы:exit(_Exitиз libc),exit_safe(__builtin___exit_safe, реализованный в компиляторе),abort(из libc) илиtrap(__builtin_trap). Дляexitиexit_safeвозможно задать код возврата с помощью опции-fhandle-safe-error-exit-code=. Отключить safe exit для части функций или полностью можно с помощью опций-fno-handle-safe-error=и-fno-handle-safe-error-handler.Поддерживаемые версии: safelang-19
Ветка Версия (дата) safelang-19 8 (2025-04-18)