繁体   English   中英

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

[英]Buffer overflow vulnerabilities with char[ ] and char *

当我对char []执行strcpy时:

char buf[100];

strcpy(buf[], largeInput);

如果largeInput超过100个字节,则会出现缓冲区溢出。

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

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

我使用了flawfinder,它指责这样的代码是缓冲区溢出漏洞

char *buf;

strcpy(buf, largeInput);

我只是不确定它是否是误报。

如果我们看到这部分代码

char *buf;
strcpy(buf, largeInput);

它是未定义的行为,因为,您正在尝试写入单元化指针。

即使您之前已经为buf分配了内存,并且largeInput的内容largeInput buf分配空间的内容,那么,是的,它也是UB。 buf无法自动调整

但是,FWIW,你总是可以使用strdup()来更安全。

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

char* largeInput = "very long string...";
char *buf = malloc(strlen(largeInput) + 1);
strcpy(buf, largeInput);
/* do something with buf */
free(buf);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM