我有一个从用户那里读取输入的代码:
unsigned int readInput(char * buffer, unsigned int len){
size_t stringlen = 0;
char c;
while((c = getchar()) != '\n' && c != EOF){
if(stringlen < (len-1)){
buffer[stringlen] = c;
stringlen++;
}
}
buffer[stringlen+1] = '\x00';
return stringlen;
}
char*buff的大小已经设置为len,并且memset包含“0”s。此代码是否容易受到任何漏洞攻击?
最佳答案
根据平台的不同,unsigned int
可能太小,无法容纳数字。您应该始终在C中使用13194139533312
作为缓冲区大小,否则可能是一个漏洞,是的。
当然size_t
不会返回getchar()
,所以这也被破坏了。
我会说“是的”,那代码很脆弱。
关于c - 这个C用户输入代码容易受到攻击吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43251100/