Chinaunix首页 | 论坛 | 博客
  • 博客访问: 69804
  • 博文数量: 11
  • 博客积分: 610
  • 博客等级: 中士
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-08 14:33
文章分类
文章存档

2012年(3)

2011年(1)

2010年(3)

2008年(4)

我的朋友

分类: C/C++

2010-09-03 17:39:26

最近在做一个项目,其中有一个aal模块没有源码,只提供静态库,我发现其中一个API有错误,传入完全合法的参数进去,总会调用失败。
 
从其它途径获得了这个模块的源代码,可惜版本不同,不能用在我们的工程中,不过还是可以看看怀疑有问题API的实现,经过一番跟踪,发现在一个条件判断中,如果"枚举变量>N” 则判断此枚举变量取值非法,返回错误,而我正是传递了枚举值N+1,怎么办呢? 库的源码不能修改,而要实现功能必须传N+1,我想到修改枚举值的定义,将原来的N改为N+2,那么我传递的N+1不就在范围内了吗?
 
编译之后,发现还是一样的问题,并没有如我所愿。
 
我仔细想了一下,认为枚举值就是一个整数值,编译之后的静态库中只保存该枚举的整数值,改了枚举的定义,静态库也应该重新编译,问题就出在这里,后来我在网上也得到了验证。
阅读(691) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~