在MAC OS X上调用DH_generate_密钥例程时出现openssl校验和错误
首先,我不确定这是否是一个特定的平台错误。我正在使用openssl库生成大素数和私钥/公钥。当素数相对较小(128位)时,它运行良好,但当素数越来越大(256512位)时,我无法编译并出现错误 上述代码产生了一个错误:在MAC OS X上调用DH_generate_密钥例程时出现openssl校验和错误,c,macos,openssl,C,Macos,Openssl,首先,我不确定这是否是一个特定的平台错误。我正在使用openssl库生成大素数和私钥/公钥。当素数相对较小(128位)时,它运行良好,但当素数越来越大(256512位)时,我无法编译并出现错误 上述代码产生了一个错误: malloc: *** error for object 0x7ffba8403c88: incorrect checksum for freed object - object was probably modified after being freed. *** set
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
我在MacOx10.8.2上使用openssl 1.0.1。如果您有任何建议,我将不胜感激
更新:产生此类错误的另一种方法是在上述代码之前创建线程。无论哪种方式,子程序DH_generate_key总是给我错误。与堆损坏相关的错误消息,例如来自
malloc()
的消息,表明您存在内存管理错误,例如释放内存后使用内存,或超出分配的内存。这种malloc()
错误消息通常出现在实际编程错误发生的不同位置。在Valgrind中运行您的应用程序,以获取有关出错原因的有用信息
与错误无关,但上面两行代码中存在内存泄漏:
DH * params = DH_new();
params = DH_generate_parameters(512, 5, NULL, NULL);
指向分配的DH
结构的指针在第二行被DH
结构覆盖,该结构由DH\u generate\u parameters()
返回。DH_new()
分配的缓冲区丢失。但这不是错误消息的原因
DH * params = DH_new();
params = DH_generate_parameters(512, 5, NULL, NULL);