注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

^_^ china.ygw的博客

软件开发/c/c++/数据库/开源/linux/windows/安全/网络...

 
 
 

日志

 
 
 
 

openssl新增算法引发的windows平台运行时nid_objs全局变量值错位  

2013-08-26 22:29:25|  分类: openssl |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

        这几天,对v1.0.1e版本openssl进行修改代码,实现算法的新增,遇到一个非常奇怪的问题,问题详情如下:
        通过修改crypto/objects/obj_dat.h头文件实现新增算法信息的添加,并且在OpenSSL_add_all_algorithms接口中加载新增的算法信息。在linux下编译并且运行,新增算法能免加载成功,但是在windows平台运行时,程序崩溃。通过跟踪,发现在crypto/objects/obj_dat.h文件中nid_obj全局变量值错位,比如我新增的nid为1000,nid_objs索引值为1000数据对应的nid不是1000,而是1001,错了一位。
        linux下正常,windows上异常,真的把我给搞糊涂了。整了老半天还是没有头绪,与几个有此方面经验的同事交流,也是不得其解。偶然间用ultraedit查看crypto/objects/obj_dat.h文件内容时,看到ultraedit底部显示的该文件编码为UTF-8兼Unix换行符格式。由于nid_objs全局变量值的错位不是很大,突然间怀疑是不是与此有关系?
        带着疑问,把该文件重新用ultraedit另存为Ascii编码兼Unix换行符格式。然后在windows系统下重新编译openssl,编译之前先清理之前已经编译生成的文件信息。编译完成并安装后,再次运行,一切OK。
        很是诡异的问题,呵呵!
  评论这张
 
阅读(153)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018