НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте 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. Поведение для нулевого и положительных индексов не меняется.