2013-05-01 1 views
1

мое программное обеспечение - это веб-сканер, когда я получаю тело от ответа http, он трескается.Ошибка сегмента memcpy, что случилось с этим кодом?

resp->body = Malloc(content_len); 
memcpy(resp->body, body_start, content_len); //THIS IS THE FAULTY LINE 

Malloc является функцией обертки таНоса, так resp-> тело не NULL, а content_len длина области памяти начинается с body_start, но его содержание "PK \ 003 \ 004 \ 024", «\ 003» - это ETX (конец текста), «\ 004» - EOT (конец передачи), «\ 024» - это устройство 4, я действительно не знаю, в чем смысл этих странных уловок, почему это треск?

+0

Как вы инициализируете 'body_start'? Очевидно, что это самый вероятный преступник. –

+0

body_start - это указатель начала работы HTTP-ответа. Я проверил ошибку, поэтому, когда программа запускает memcpy, body_start правильно инициализируется. – YuYang

+0

Простите меня, если я не возьму ваше слово за это. –

ответ

2

Корпус ZIP кодируется из ZIP wikipedia page;

Магическое число
нет, хотя PK \ 003 \ 004, PK \ 005 \ 006 (пустой архив), или PK \ 007 \ 008 (не натянутой архив) являются общими.

Перед тем, как прочитать его, вам необходимо проверить заголовок и разархивировать его.

Что касается ошибки сегментации, то любой из трех параметров memcpy может быть виновником, для определения точной проблемы требуется код, показывающий их инициализацию. Если вы используете какую-либо из строковых функций (strlen/strcpy) на теле в не показанной части кода, они, вероятно, будут разбиваться на двоичный вход, как это.

+0

спасибо за ваш ответ. URL-адрес кажется ссылкой на zip-файл. и программа загружает его, но когда я отправляю HTTP-запрос, я добавил «Accept: text/html» в заголовок запроса, и сервер все равно дает мне zip-файл. – YuYang

+1

@YuYang Если вы запрашиваете почтовый индекс и нет альтернативного кодирования, который может сделать сервер, большинство веб-серверов все равно отправят файл. –

+0

Да, я получаю ошибку, функция фильтрации URL-адресов не содержит zip.thank вас очень ..... – YuYang

Смежные вопросы