Ошибка RSA_sign () непредсказуемо - PullRequest
1 голос
/ 06 февраля 2012

Я использую RSA_sign () для создания подписей dkim. Иногда крайне непредсказуемо код просто вылетает

Я получаю дамп GDB, как это

Thread 39 (Thread 0x41401940 (LWP 31921)):
#0  0x0000003b9dacc3bb in BN_div () from /lib64/libcrypto.so.6
#1  0x0000003b9daceb40 in BN_mod_inverse () from /lib64/libcrypto.so.6
#2  0x0000003b9dacb609 in BN_BLINDING_create_param () from /lib64/libcrypto.so.6
#3  0x0000003b9dadc9f7 in RSA_setup_blinding () from /lib64/libcrypto.so.6
#4  0x0000003b9daee954 in ?? () from /lib64/libcrypto.so.6
#5  0x0000003b9daef56b in ?? () from /lib64/libcrypto.so.6
#6  0x0000003b9da6e965 in RSA_sign () from /lib64/libcrypto.so.6
#7  0x0000000000403e7f in dkim_create (headers=0x2aaaac001840, headerc=7,
......., v=0) at firm-dkim.c:145

Фирма-dkim.c доступна здесь http://code.google.com/p/firm-dkim/source/browse/trunk/firm-dkim.c

Как я могу отладить это дальше?

Спасибо Ram

1 Ответ

1 голос
/ 07 февраля 2012

Хорошо, я думаю, что получил ошибку. Код здесь firm-dkim.c .Не выделяет никакой памяти для RSA * rsa_private, строка 48

И эта нераспределенная область памяти используется в RSA_sign () и RSA_free ()

Я думаю, что это должно вызывать ошибку segfault.Теперь я выделил память и запускаю демона в производстве.Надеюсь, больше нет сегфолтов.

...