1

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

firm-dkim.cはこちらから入手できます http://code.google.com/p/firm-dkim/source/browse/trunk/firm-dkim.c

これをさらにデバッグするにはどうすればよいですか?

ありがとうラム

4

1 に答える 1

1

エラーが発生したと思います。ここのコードは firm-dkim.cです。RSA * rsa_private、48行目にメモリを割り当てません

そして、この未割り当てのメモリ領域は、RSA_sign()およびRSA_free()で使用されます。

それがセグメンテーション違反を引き起こしているに違いないと思います。現在、メモリを割り当てており、本番環境でデーモンを実行しています。うまくいけば、これ以上のsegfaultsはありません。

于 2012-02-07T15:09:05.753 に答える