«Трофеи» Безопасного компилятора

На этой странице перечислены наши «трофеи», то есть ошибки в исходном коде программных пакетов, обнаруженные при помощи инструментов Безопасного компилятора (компиляторов SAFEC и Safelang).

Жизненный цикл «трофея» можно разбить на две стадии:

  1. Обнаружение — анализ диагностики Безопасного компилятора, составление и отправка отчёта о потенциальной ошибке, подтверждение ошибки от разработчиков пакета.
  2. Исправление — подготовка патча с исправлением ошибки, отправка патча на ревью, интеграция патча в пакет как новый коммит или серию коммитов.

Содержание

safec 🔗

Опции кодогенерации 🔗

Здесь представлены ошибки, обнаруженные благодаря включённым в компиляторе SAFEC опциям кодогенерации, в частности -fno-delete-null-pointers-checks и -fwrapv-pointer.

Пакет Обнаружение Исправление
Статус Версия Статус Версия Коммит
oniguruma
Опции кодогенерации: -fno-delete-null-pointers-checks, -Warray-bounds.
Подтверждено 6.9.8 Исправлено 6.9.9 e6aef5e4
vala
Опции кодогенерации: -fno-delete-null-pointers-checks.
Ожидание ответа 0.56.18
open-iscsi
Опции кодогенерации: -fwrapv-pointer, -Wformat-overflow.
Подтверждено 2.1.6 Исправлено 2.1.8 8c6d7bc2
ulogd
Опции кодогенерации: -fwrapv-pointer, -fno-delete-null-pointer-checks, -Warray-bounds.
Подтверждено 2.0.7 Исправлено независимо 2.0.8 6709f6b5

Предупреждения -Warray-bounds 🔗

Здесь представлены срабатывания предупреждения -Warray-bounds. Предупреждение поддерживается исходным компилятором GCC, в версии SAFEC оно слегка доработано.

Пакет Обнаружение Исправление
Статус Версия Статус Версия Коммит
firefox Подтверждено 103.0 Исправлено 104.0 b34b6b9a
cciss_vol_status Подтверждено 1.12 Исправлено независимо 1.12a
testdisk Подтверждено 7.1 Исправлено 7.2 0ae7969c
strongswan Подтверждено 5.9.6 Исправлено 5.9.8 47fd5ab6
libxml2 Подтверждено 2.9.14 Исправлено 2.11.0 d7a334f2

Предупреждения -Wextra-array-bounds 🔗

Здесь представлены срабатывания предупреждения -Wextra-array-bounds, которое реализует более строгие проверки по сравнению с -Warray-bounds. Предупреждение новое в SAFEC.

Пакет Обнаружение Исправление
Статус Версия Статус Версия Коммит
clamav Подтверждено
Отчёт с ошибкой опубликован в пакете ClamAV, источник же ошибки вскрылся в пакете UnRAR.
0.103.2 Исправлено 1.2.0 6e5db6ea
unrar 5.9.2 Исправлено 6.2.3 2ecab6bb

Предупреждения -Wclobbered 🔗

Здесь представлены срабатывания предупреждения -Wclobbered. Предупреждение значительно доработано по сравнению с исходной версией в GCC, улучшена точность и полнота проверки.

Пакет Обнаружение Исправление
Статус Версия Статус Версия Коммит
openjpeg Подтверждено 2.4.0 Исправлено независимо 2.5.0 f0629cb1
openrc Подтверждено 0.42.1 Исправлено независимо 0.45 8b247dd5
pigz Подтверждено 2.4 Исправлено независимо 2.6 c9de6c53
freetype Подтверждено 2.12.1 Исправлено 2.13.0 8aac6a23
postgres Подтверждено 15.2 Исправлено 17.0 a8b74246

Санитайзер returns-twice 🔗

Санитайзер returns-twice реализует динамическую проверку отсутствия неопределённого поведения в функциях, возвращающих управление более одного раза (таких как setjmp(3) или vfork(2)).

Пакет Обнаружение Исправление
Статус Версия Статус Версия Коммит
emacs Подтверждено 29.4 Исправлено независимо 2169a938
mmh Не опубликовано
Пакет является заброшенным форком nmh, в котором код с ошибкой больше не используется.
0.4

safelang 🔗

Опция кодогенерации -ftrivial-auto-var-init=zero 🔗

Здесь представлены ошибки, обнаруженные благодаря включённой в компиляторе Safelang на этапе кодогенерации опции -ftrivial-auto-var-init=zero.

Пакет Обнаружение Исправление
Статус Версия Статус Версия Коммит
apr Ожидание ответа 1.7.4

Fortify-хедеры 🔗

Здесь представлены ошибки, обнаруженные благодаря используемому в Safelang механизму fortify-хедеров.

Пакет Обнаружение Исправление
Статус Версия Статус Версия Коммит
dqlite Ожидание ответа 1.16.0 Ожидание ответа
ngspice Подтверждено 42 Исправлено 44 59808690

Variadic-санитайзер 🔗

Variadic-санитайзер обнаруживает во время выполнения неопределённое поведение, связанное с передачей аргументов в variadic-функции.

Пакет Обнаружение Исправление
Статус Версия Статус Версия Коммит
c-dvar Подтверждено 1.1.0 Исправлено 1421780b
gegl Подтверждено 0.4.48 Исправлено 0.4.50 51d6fe4c
grilo Ожидание ответа 0.3.16 Ожидание ответа
janet Подтверждено 1.34.0 Исправлено 1.37.0 5e443cd2
libmesode Не опубликовано
Пакет является заброшенным форком libstrophe.
0.10.1
libsoup Подтверждено 3.4.4 Исправлено 3.6.1 c3ac4697
libstrophe Подтверждено 0.13.1 Исправлено 0.14.0 5690c4ed
lilv Подтверждено 0.24.24 Исправлено независимо 0.24.26 eaeeee7a
mimalloc Подтверждено 2.1.6 Исправлено 2.1.8 c59b0cd7
mruby Подтверждено 3.3.0 Исправлено 3.4.0 52176600
redis Не опубликовано
Redis 7.x, начиная с версии 7.3, не является свободным ПО по определению Open Source Initiative (OSI). Соответствующее исправление отправлено в Valkey (см. ниже) — форк Redis со свободной лицензией.
7.2.5
curl Подтверждено 8.8.0 Исправлено 8.11.0 7ca164fa
ell Подтверждено 0.65 Исправлено 0.72 709bde1b
fish Не опубликовано
Начиная с версии 4.0.0, пакет портирован на Rust.
3.7.1
openssl Подтверждено 3.3.1 Исправлено 3.3.3 e702b4f2
tpm2-openssl Подтверждено 1.2.0 Исправлено 1.3.0 46bb34e6
valkey Подтверждено 7.2.5 Исправлено 8.1.0 43b50261

Санитайзер returns-twice 🔗

Здесь представлены ошибки, обнаруженные санитайзером returns-twice из поставки Safelang.

Пакет Обнаружение Исправление
Статус Версия Статус Версия Коммит
libgd Ожидание ответа 2.3.3 Ожидание ответа
p11-kit Подтверждено 0.25.5 Исправлено 01408e26
ruby Подтверждено 3.3.6 Исправлено a6aaeb9a
ruby Ожидание ответа 3.3.6 Ожидание ответа