gpt4 book ai didi

c - 代码中的缓冲区溢出识别

转载 作者:行者123 更新时间:2023-11-30 21:35:42 24 4
gpt4 key购买 nike

以下代码是否容易受到缓冲区溢出攻击。请指出哪一行或多行代码是错误的。请建议如何修复该漏洞。

#include stdio.h

void manipulate(char *buffer) {
char newbuffer[80];
strcpy(newbuffer,buffer);
}

int main() {
char ch,buffer[4096];
int i=0;

while ((buffer[i++] = getchar()) != '\n') {};

i=1;
manipulate(buffer);
i=2;
printf("The value of i is : %d\n",i);
return 0;
}

最佳答案

 1. while ((buffer[i++] = getchar()) != '\n')

您必须确保输入的字符数少于 4096。否则就会出现缓冲区溢出。当阅读到行尾时,最好使用 fgets() ,这样更安全。

2. strcpy(newbuffer,buffer);

如果你的数组 buffer 已满,那么你就会发生缓冲区溢出,因为 newbuffer 无法容纳 4096。在这里也使用一些更安全的函数来处理缓冲区溢出就像snprintf()

关于c - 代码中的缓冲区溢出识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27597451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com