Отрубленный хвост
Dec. 16th, 2016 09:37 pmПару недель назад мне прислали багрепорт на open engine — открытую реализацию алгоритмов ГОСТа для OpenSSL. Это меня с одной стороны обрадовало — приятно, когда твоим кодом пользуются — а с другой огорчило: год назад всё работало. Правда, это было ещё до релиза версии 1.1.0...
Вскрытие показало, что в Makefile отсутствовала директива -Werror, из-за чего выдавались только предупреждения в тех местах, где API поменялось. Исправление сборки само по себе не изменило ситуацию, пришлось лезть в дебаггер.
Две ошибки я устранил быстро, и заработал TLS с 2001-м годом. А с 2012-м ситуация не исправилась.
Несколько вечеров я провёл, долбясь головой об стенку и изучая каждый diff за год, благо их немного. Потом удалось воспроизвести ошибку не на TLS, где отлаживать приходилось с двух концов, а на smime. И на пятый день индеец Зоркий Глаз заметил, что полностью изменена была система сборки, и в CMake-овских правилах не было проверок на endianess. По нелепому стечению обстоятельств затрагивало это только два алгоритма, которые я заподозрить не успел. После исправления всё заработало. Так что этот хвост не будет меня беспокоить в новогоднюю ночь.
Вскрытие показало, что в Makefile отсутствовала директива -Werror, из-за чего выдавались только предупреждения в тех местах, где API поменялось. Исправление сборки само по себе не изменило ситуацию, пришлось лезть в дебаггер.
Две ошибки я устранил быстро, и заработал TLS с 2001-м годом. А с 2012-м ситуация не исправилась.
Несколько вечеров я провёл, долбясь головой об стенку и изучая каждый diff за год, благо их немного. Потом удалось воспроизвести ошибку не на TLS, где отлаживать приходилось с двух концов, а на smime. И на пятый день индеец Зоркий Глаз заметил, что полностью изменена была система сборки, и в CMake-овских правилах не было проверок на endianess. По нелепому стечению обстоятельств затрагивало это только два алгоритма, которые я заподозрить не успел. После исправления всё заработало. Так что этот хвост не будет меня беспокоить в новогоднюю ночь.