[I128-2525] DP_Irbis64Native не должен читать бит по отрицательному индексу


НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.2.3 >> [I128-2525] DP_Irbis64Native не должен читать бит по отрицательному индексу📄 Скачать в DOCX


Тип Версия Статус Приоритет Исполнитель
⚙️ Исправление ошибок 2026.2.3 🔘 Завершено Средний Ilya Mikhaylenko

Компоненты: ИРБИС 128. Модуль DP_Irbis64Native - Нативный провайдер данных к файлам СУБД ИРБИС 64/64+

Завершено: 29.06.2026 14:24

Проблема: Метод BitList::get() в DP_Irbis64Native не проверяет отрицательный индекс бита.

При вызове с отрицательным индексом вычисляется отрицательный индекс байта. В PHP это может привести к чтению байта с конца строки-буфера вместо корректного ответа false.

Из-за этого проверка отсутствующего или некорректного MFN может вернуть результат, зависящий от последнего байта битовой маски, а не от запрошенного индекса.

Ожидаемое поведение: Отрицательный индекс бита должен обрабатываться так же, как несуществующий бит: метод должен сразу возвращать false.

Что изменяется: В BitList::get() добавляется ранняя проверка $bitIndex < 0.

После изменения: Вызов get(-1) и другие отрицательные индексы не читают буфер и всегда возвращают false. Поведение для нулевого и положительных индексов не меняется.