pcap:如何检查pcap_dispatch中的数据包边界

问题描述 投票:0回答:1

我正在使用libpcap处理PCAP文件,查找IP标头,提取内容,移至udp / tcp并提取内容等等。

[pcap_dispatch()将数据包插入到定义为以下内容的回调中:

typedef void (*pcap_handler)(u_char *user, const struct pcap_pkthdr *h, const u_char *bytes);

如果我正确阅读了手册页,则上面的bytes是数据包中caplen字节数据的[[指针,其中caplenstruct pcap_pkthdr *中。

这是否意味着pcap_handler例程将需要维护数据包缓冲区指针的末尾,并始终在移动bytes指针之前进行检查?

或者,我只在pcap_handler中分配缓冲区:

u_char *pktbuf = malloc(h->caplen);

它将保证边界。

[pcap_dispatch()pcap_loop()中通常处理pcap的正确方法是什么?

linux network-programming pcap libpcap
1个回答
0
投票
bytes保证至少为h->caplen大。除此之外,您不需要进行绑定检查。
© www.soinside.com 2019 - 2024. All rights reserved.