关于Stack around the variable "" was corrupted问题

   最近使用openssl库时出了点问题,在调用EVP_CIPHER_CTX_init函数后外部调用函数返回时弹出“Stack around the variable "" was corrupted”错误。初步一看很明显,该错误是栈的问题,且是栈中的某个变量访问越界引起的。但在审阅代码时没有发现哪个地方有访问越界,无奈之下只能Debug了,通过调试发现在调用EVP_CIPHER_CTX_init函数时,传递的参数为EVP_CIPHER_CTX结构指针,该函数实现也很简单,只是使用memset将该结构体初始化为0,调试过程中发现函数调用之前的结构体大小为16,而函数体内该结构体为24,百思不得其解,莫名其妙。后来将最新的的openssl代码下载下来看了一下,发现自己当前使用的openssl静态库是最新代码编译的,而引用的头文件却是旧版本的openssl,这样问题就出来了,就的结构体大小更小,而新的库中结构体更大,由于传递的是指针,结构在EVP_CIPHER_CTX_init中调用memset时访问越界了,多设置了增大部分的栈空间,最终报错。

  网上有相关的帖子的解决方法都是设置编译选项,但本人觉得一旦程序运行发生这个错误,那就说明程序代码存在问题,这时应该是查找真正问题而不是设置编译选项这种指标不治本的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值