2

キャプチャ ファイルから 1 つずつパケットを読み取ろうとしています:

pcap_t *  structure = pcap_open_offline(file, errbuf)

その後

pcap_pkthdr** hdr=new (pcap_pkthdr*);
const u_char** data=NULL;
while(pcap_next_ex(structure, hdr, data) == 1)
{.....}

したがって、pcap_next_ex はコアでクラッシュします。

Program terminated with signal 11, Segmentation fault.
[New process 7928]
(gdb) bt
0x0804a038 in pcap_fakecallback ()
0x08057ac4 in pcap_offline_read ()
0x0804ae19 in pcap_next_ex ()
0x08049b3d in main () at ..

何か案は?ありがとう!

4

2 に答える 2

0

pcap_pkthdr のストレージを渡す必要があるため、pcap_next_ex はそこにデータを格納できます。

さらに、pcap_next_ex は、pcap ライブラリが内部的に保持するパケット データを指すようにデータ ポインターを設定します (したがって、データ ポインターが指す場所は、pcap_next_ex を再度呼び出すまでのみ有効です)。

これを行う必要があります:

pcap_pkthdr hdr;
const u_char* data=NULL;
while(pcap_next_ex(structure, &hdr, &data) == 1)
于 2013-08-22T20:43:28.073 に答える