0
我想知道我的应用程序的缓冲区溢出。 例如,我有这样的代码:在C中recv()有可能发生缓冲区溢出吗?
enum { BUFSIZE = 1024};
char username[this->BUFSIZE];
memset(username,0,BUFSIZE);
char password[this->BUFSIZE];
memset(password,0,BUFSIZE);
send(client_fd, "Login: ", BUFSIZE, 0);
recv(client_fd,username,sizeof(username),0)
恶意攻击型超过1024个字符,可以做一个BOF?
不要忘记C字符串需要终止符号''\ 0''的空格。目前,UDP操作可能会完全填充您的用户名,导致呈现无效的C字符串,这可能会在稍后导致程序崩溃。检查recv的返回值来捕获它并自己添加一个'\ 0'。 – Zeta