首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有char[ ]和char *的缓冲区溢出漏洞

带有char[ ]和char *的缓冲区溢出漏洞
EN

Stack Overflow用户
提问于 2015-11-28 12:41:47
回答 2查看 992关注 0票数 3

当我对char[]执行strcpy时:

代码语言:javascript
复制
char buf[100];

strcpy(buf[], largeInput);

如果largeInput大于100个字节,则存在缓冲区溢出。

但是,我有一个问题,如果buf不是char[]char指针,那么缓冲区溢出也会出现吗?

我认为,如果largeInput足够长,当复制到char *buf时,它可能会到达另一个变量的内存区域。但是,我不确定这是否是一个漏洞。

我使用了完美查找器,它指责这样的代码是缓冲区溢出漏洞。

代码语言:javascript
复制
char *buf;

strcpy(buf, largeInput);

我只是不确定这是不是假阳性。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-28 12:44:31

如果我们只看到代码的这一部分

代码语言:javascript
复制
char *buf;
strcpy(buf, largeInput);

它是未定义行为,因为您试图写入统一指针。

即使您以前已经将内存分配给buf,而且largeInput的内容比buf中分配的空间的内容更多,那么,是的,它也是UB。buf不可能自动调整。

但是,FWIW,您可以始终使用strdup()来保持安全。

票数 2
EN

Stack Overflow用户

发布于 2015-11-28 14:38:27

如果要支持任意大小的输入,则根据大小为largeInput分配内存。

代码语言:javascript
复制
char* largeInput = "very long string...";
char *buf = malloc(strlen(largeInput) + 1);
strcpy(buf, largeInput);
/* do something with buf */
free(buf);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33971414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档