安全函数真的安全吗?
来源:互联网 发布:现在翻墙用什么软件 编辑:程序博客网 时间:2024/04/28 22:31
看一个例子:
bool getstr(char *str, int len)
{
char *p = "hello, everyone!";
sprintf(str, p);
return true;
}
void test()
{
char str[8] = {0};
getstr(str, 8);
printf("%s\n", str);
}
毫无疑问,会产生一个异常,程序stop working.
好,那就红色部分换为安全函数,sprintf_s(str, len, p); 或者 strcpy_s(str, len, p); 结果会怎样?
依然产生一个异常,程序stop working.
二者的区别是什么? 非安全函数不会检查边界,不会主动抛出异常,会导致程序运行错误或内存非法访问。安全函数会检查到是Buffer too small, 然后抛出异常,更容易定位问题。
但是安全函数看来也是不安全的,果断改成如下:
while(--len > 0 && (*str++ = *p++) != '\0');
if (len == 0)
*str = '\0';
OK了,一切正常。
0 0
- 安全函数真的安全吗?
- MD5真的安全吗?
- 我们的wifi,真的安全吗
- 性用品真的还安全吗
- 云安全真的安全吗?
- Android软件加密真的安全吗
- 香港查性别真的安全吗?
- 走近科学:二维码真的安全吗
- Weak-Strong-Dance真的安全吗
- Vector 真的线程安全吗?
- 网络安全七大误解 你的系统真的安全吗?
- 同步容器真的是安全的吗?
- 你追逐的安全感真的安全吗?
- 大数据时代,您的个人信息真的安全吗?
- 频繁的更换密码真的安全吗
- 线程安全的单例模式是否真的安全
- 安全的strcpy函数
- 安全的 WaitEvent 函数
- css命名规范
- hdu 4857
- Binary Tree Preorder Traversal
- linux 机器修改hostname
- Android 网络通信框架Volley简介(Google IO 2013)
- 安全函数真的安全吗?
- 函数的形参传递方式:值传递,指针传递,引用传递的区别
- error while loading shared libraries: libssl.so.4问题解决方法
- android学习笔记4-几种常用布局的介绍
- java专题——栈
- .net hashTable 和dictionary 区别
- poj 1562
- iOS 子视图在父视图的显示范围
- VMware安装linux网络设置 桥接方式