在MAC OS X上调用DH_generate_key例程时出现c openssl校验和错误

时间:2013-02-13 00:48:13

标签: c macos openssl

首先,我不确定这是一个特定的平台错误。我正在使用openssl库生成大素数和私钥/公钥。当素数相对较小(128位)时,它运行正常,但是当素数越来越大(256,512位)时,我无法编译并得到错误。

DH * params = DH_new(); 
params = DH_generate_parameters(512, 5, NULL, NULL);

DH_generate_key(params); // can't get through this point when prime bits getting bigger

上面的代码产生了一个错误:

 malloc: *** error for object 0x7ffba8403c88: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

我在MAC OX 10.8.2上使用openssl 1.0.1。我很感激任何建议。

UPDATE :产生此类错误的另一种方法是在上面的代码之前创建一个线程。无论哪种方式,它总是在子程序DH_generate_key上给我错误。

1 个答案:

答案 0 :(得分:0)

与堆损坏相关的错误消息(例如来自malloc()的此消息)表明您有内存管理错误,例如在释放后使用内存或超出分配的内存。这种malloc()错误消息发生在与实际编程错误发生的位置不同的位置是正常的。在Valgrind中运行您的应用程序,以获取有关出错的有用信息。

与错误无关,但您在上面代码的这两行中有内存泄漏:

DH * params = DH_new(); 
params = DH_generate_parameters(512, 5, NULL, NULL);

指向已分配的DH结构的指针在第二行中被覆盖,DH返回一个新的DH_generate_parameters()结构。 DH_new()分配的缓冲区丢失。这不是错误消息的原因。