Segfault в использовании sprintf - PullRequest
0 голосов
/ 09 сентября 2011

Я пытаюсь прочитать из полезной нагрузки пакета только его пользовательский агент.

Я ищу "User-Agent" в полезной нагрузке пакета и с тех пор копирую столько символов, сколько существует между появлением "User-Agent" и первым появлением '\ n' сразу после этого. Вот мой код:

sprintf(
   stat,"%.*s\0",
   strstr(strstr(p->data, "User-Agent:"),"\n") - strstr(p->data, "User-Agent:"),
   strstr(p->data, "User-Agent: ")
);

Проблема в том, что для LOT пакетов это вызывает ошибку seg. Я извиняюсь за этот глупый способ написать это; если вы знаете лучший способ написать (или отформатировать), пожалуйста, скажите мне.

1 Ответ

0 голосов
/ 09 сентября 2011

Почему вы пишете такой сложный код? Артритный указатель может закончить указывать на то, что вызовет ошибку сегмента. Рассмотрите возможность рефакторинга кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...