Про баги в libtommath [FB3]

В FB3 затащили внешнюю библиотеку для работы с большими числами — libtommath. Затащили как есть. Только за это хочется взять черенок от лопаты…

Весной 2016-го, при переносе этой библиотеки в код IBProvider, была проведена её ревизия, нормализация кода и созданы тесты. Ошибок было найдено «больше одной штуки».

В начале декабре 2016-го, в процессе нагрузочного тестирования отладочной сборки, сработал ассерт в mp_div — обнаружилась ошибка с проверкой принадлежности индекса допустимому диапазону.

А сегодня в логе нагрузочного тестирования обнаружил запись:

...
1. [LCPI.IBProvider.3]: Ошибка вызова функции libtommath [set01] - mp_exptmod. Код ошибки: -3.
...

И тут уже, судя по всему, если и стоит ругаться, то только на себя. В сообщении об ошибке вызова mp_exptmode надо было указать значения аргументов 🙁

IBP_BigInteger IBP_BigInteger::modPow(const self_type& pow, const self_type& mod)const
{
 self_type rc;
 
 CHECK_MP_OP(mp_exptmod, (m_data.ptr(),
                          pow.m_data.ptr(),
                          mod.m_data.ptr(),
                          rc.m_data.ptr()));
 return rc;
}//modPow

Вот кто бы подсказал это сразу …

5 комментариев

hvlad  on 10 марта, 2017

> Ошибок было найдено «больше одной штуки».
Сколько из них ты сообщил авторам ?

hvlad  on 10 марта, 2017

Что сказать — молодец.

А ты не пробовал использовать в FB обновлённую версию ? Например, релизную от 03.02.2016

Dmitry Kovalenko  on 13 марта, 2017

Нет, не пробовал.

Что-то мне уже эти эксперименты надоели.

IBProvider Trial [сборка 25178]  on 15 марта, 2017

[…] для скачивания новый IBProvider Trial с исправленной ошибкой в […]

Leave a Comment