_tcscat在Debug和Release根据问题
2015-07-20 13:26
246 查看
背景:
因此,例如,在下面的代码段,作用是得到的路径当前程序(C:\work\A.exe),然后”A.exe”拆除,组装的”C:\work\inject.dll”
问题:
结论:
因此,例如,在下面的代码段,作用是得到的路径当前程序(C:\work\A.exe),然后”A.exe”拆除,组装的”C:\work\inject.dll”
TCHAR szDllPath[MAX_PATH] = _T(""); TCHAR szExePath[MAX_PATH] = _T(""); GetModuleFileName(GetModuleHandle(NULL), szExePath, MAX_PATH); int nIndex = 0; int i = lstrlen(szExePath); while (i > 0) { if (szExePath[i] == _T('\\')) { nIndex = i; break; } i--; } for (i = 0; i < nIndex + 1; i++ ) { szDllPath[i] = szExePath[i]; } _tcscat(szDllPath, _T("InjectDll.dll"));
问题:
1.Debug模式下执行,得到的结果是预期的"C:\\work\\inject.dll"。 2.Release模式下执行。得到的结果却是"C:\\work\\",也就是_tcscat函数执行不成功。
结论:
1.发现使用_tcscat可能存在风险问题,换用_tcscat_s就OK了。 2.自从vc2005開始,微软力推_s安全版函数以代替不安全的标准非_s版函数,比如:strcat_s、strcopy_s、sprintf_s、_tcsnset_s、_tcsset_s、_tcstok_s...等等 3.代码静态走查是能够关注字符串运算是否使用了_s安全版函数。
相关文章推荐
- 郁金香驱动编程学习>第一课:第一个驱动程序
- Android-往来:添加到联系人
- C语言 数据类型(复习)
- centos 安装nodejs
- 嵌入式文件系统ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等介绍
- 关于block使用的5点注意事项
- permission denied for this window type
- Ubuntu MySQL允许远程连接访问
- ViewDragHelper应用,仿豆瓣音乐Cover界面
- 对Spring IOC的理解
- ontouch事件原理 view和viewgroup
- Hadoop之常见错误集锦
- AOP(面向切面编程)
- JAVA Spring 配置及IOC AOP相关
- java及前端开发工具(win环境
- SI4432模块
- GTK基本概念小结
- 谁尊重观众,观众就为谁点赞
- java数字转字符串及字符串转数字
- 修改Dialog窗体的类名