Мне интересно о переполнении буфера в моем приложении. Например, у меня есть этот код:Возможно ли иметь переполнение буфера в recv() в C?
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 символов и сделать кислородный конвертер?
Не забывайте, что для строк C требуется место для символа окончания '' \ 0''. В настоящее время операция UDP может полностью заполнить ваше имя пользователя, создавая недействительную строку C, что может привести к сбою вашей программы позже. Проверьте возвращаемое значение recv, чтобы поймать это и добавить '\ 0' самостоятельно. – Zeta