2011-02-21 1 views
1

EDIT: Удалено код/​​объяснение, потому что этот проект был снова предоставлен, и учащиеся могут легко найти решение через этот пост.Дескриптор Socket после вызова на recvfrom

Чтобы выяснить, что произошло, я просто передал неправильную длину/размер в моем вызове recvfrom().

ответ

1

В этой строке:

if(recvfrom(temp->sockfd, sendHostIP, BUFFER_LEN, 0, (struct sockaddr *)&recvAddr, &recvLen) < 0) 
    errorMsg("recvfrom"); 

Проходите BUFFER_LEN как длина (256), но только sendHostIP длины MAXHOSTNAMELEN (64).

Это приводит к переполнению этого буфера recvfrom(). Та же проблема возникает при чтении до localHostIP.

+0

О, человек, это так. Я должен скопировать/вставить размер массива неправильно. Благодаря! – 235711131719