Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2001448
  • 博文数量: 369
  • 博客积分: 10093
  • 博客等级: 上将
  • 技术积分: 4271
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-21 00:59
文章分类

全部博文(369)

文章存档

2013年(1)

2011年(2)

2010年(10)

2009年(16)

2008年(33)

2007年(146)

2006年(160)

2005年(1)

分类: C/C++

2007-03-30 23:40:50

C语言的字符串操作函数(如strcpy, strcat和sprintf等)由于程序员们的不当使用,造成了很多由缓冲区溢出引发的安全漏洞。为此,C语言标准引入了“相对”更加“安全”的带缓冲区大小的新版本字符串操作函数:strncpy,strncat和snprintf等。

但是应用这些函数就真的“安全”了吗?

个人认为,这些函数只是“强制”程序员用户关注潜在的缓冲区溢出问题,至于安全本身还是要依靠程序员来解决。如果不了解这些函数的细节,我们仍有可能掉入“陷阱”,那可能真是“按倒葫芦起了瓢”。下面我们看个例子:


#include <stdio.h>

int main(int argc, char *argv[])
{
        char buf[16];

        strncpy(buf, argv[1], sizeof(buf));
        printf("%s\n", buf);

        return 0;
}


咋一看,这个程序员的安全意识还不错嘛!不要着急下结论,实际测试下:

xiaosuo@gentux test $ ./a.out abcdefghijklmnoptrst
abcdefghijklmnop
阅读(1642) | 评论(2) | 转发(0) |
0

上一篇:《月上柳梢》

下一篇:愚人节

给主人留下些什么吧!~~