记一次排查mbstowcs误用引发的bug
2014-04-22 19:03
169 查看
问题代码如下:
这段代码在别人机器上没有问题,到我机器上就core dump。
经过一番google之后,找到了答案:
http://www.cplusplus.com/reference/cstdlib/mbstowcs/ http://pentest.cryptocity.net/files/code_analysis/code_audits_2_fall2010.pdf
mbstowcs() takes a count of wide characters to write, not a size in bytes of the destination buffer
mbstowcs(oneTieziLine_wchar,tieziLine, sizeof(oneSample_wchar)); //这行代码有问题,我测试了一下,我机器上sizeof(wchar_t)为4。显然sizeof(oneTieziLine_wchar)大于tieziLine分配的大小。
为了验证结论,我找到了mbstowcs的实现:
同时gdb验证一下:
#define MAX_LINE_LEN (10240*2) char tieziLine[MAX_LINE_LEN]; wchar_t oneTieziLine_wchar[MAX_LINE_LEN]; mbstowcs(oneTieziLine_wchar,tieziLine,sizeof(oneTieziLine_wchar));
这段代码在别人机器上没有问题,到我机器上就core dump。
经过一番google之后,找到了答案:
http://www.cplusplus.com/reference/cstdlib/mbstowcs/ http://pentest.cryptocity.net/files/code_analysis/code_audits_2_fall2010.pdf
mbstowcs() takes a count of wide characters to write, not a size in bytes of the destination buffer
mbstowcs(oneTieziLine_wchar,tieziLine, sizeof(oneSample_wchar)); //这行代码有问题,我测试了一下,我机器上sizeof(wchar_t)为4。显然sizeof(oneTieziLine_wchar)大于tieziLine分配的大小。
为了验证结论,我找到了mbstowcs的实现:
同时gdb验证一下:
相关文章推荐
- 一次排查多线程引发Java DNS缓存的Bug
- 一次关于使用status作为变量引发的bug及思考
- 一次程序bug的排查
- 记一次帮同事排查由命名引发的问题
- 很好的一个分析bug的文章,供以后疑难bug参考,转一下:一次segfault错误的排查过程
- 记一次移动端CSS引发的小Bug
- 记一次CSS引发的小Bug
- 【原创】记一次线上Tomcat故障排查-struts2 “bug”导致tomcat阻塞
- java运维: 一次线上问题排查所引发的思考
- 记录一次Bug修改__数据库连接不关闭引发的bug
- wordpress插件bug排查后记(记一次由于开启memecached引起的插件bug)
- 一次数据库连接BUG数据排查
- 10.zabbix学习笔记:记一次zabbix故障引发的排查过程
- 一次Java线程池误用引发的血案和总结
- 一次$_REQUEST的count参数异常BUG排查
- 一次线上问题排查所引发的思考
- 一次tornado升级导致的bug,排查了好久,比较坑
- 记一次 BUG 的排查过程
- 记一次saltstack软件版本升级到2017.7新版本时所引发的“血案”!
- SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理