diff options
| author | Derrick Lyndon Pallas <derrick@argosylabs.com> | 2019-04-11 18:10:56 +0000 |
|---|---|---|
| committer | Derrick Lyndon Pallas <derrick@argosylabs.com> | 2019-04-11 18:20:53 +0000 |
| commit | d74520768b32c35eae422f2b9dda9a1bf494122d (patch) | |
| tree | 178dea2cec05fca812d6101f611ac0d56477bbd7 | |
| parent | 3385df9cc9b9bcfd35539c765c9c58885206a47e (diff) | |
OfflinePacketFilter: avoid leaks on error in init
| -rw-r--r-- | src/offline_packet_filter.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/offline_packet_filter.cpp b/src/offline_packet_filter.cpp index a0fb462..ad8878a 100644 --- a/src/offline_packet_filter.cpp +++ b/src/offline_packet_filter.cpp @@ -58,8 +58,14 @@ void OfflinePacketFilter::init(const string& pcap_filter, link_type, snap_len ); + if (!handle_) { + throw pcap_open_failed(); + } if (pcap_compile(handle_, &filter_, pcap_filter.c_str(), 1, 0xffffffff) == -1) { - throw invalid_pcap_filter(pcap_geterr(handle_)); + string error(pcap_geterr(handle_)); + pcap_freecode(&filter_); + pcap_close(handle_); + throw invalid_pcap_filter(error.c_str()); } } |
