
20.07.2007, 11:46
|
|
Banned
Регистрация: 20.06.2005
Сообщений: 880
С нами:
10994966
Репутация:
1332
|
|
Код:
do
{
int i=recv(sSock,cTemp,iSize,0);
if(i<1)
return iResult;
iResult+=i;
cTemp+=i;
iSize-=i;
}
while(strncmp(cBuf+iResult-4,"\r\n\r\n",4));
Переполнение буфера.
переполнение буфера всегда лечится, а вот неправильную логику подпрограммы исправлять обычно сложнее: кто сказал что браузер пошлет запрос оканчивающийся сразу на \r\n\r\n, тут и про пост-запросы сразу забываем с таким парсингом. наверное придется проверять пост-ли это, если да, тогда смотрим поле Content-Length и продолжаем читать после \r\n\r\n ровно такое количество данных.
и strstr тем же смотри у всего cBuf наличие \r\n\r\n, а не strncmp, так как данные могу поступать как угодно.
2KEZ ну и наверняка без наличия "Host: " будет идти чтение с не зарезервированного участка памяти, что к ошибке рантайм должно привести.
|
|
|