summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerrick Lyndon Pallas <derrick@argosylabs.com>2019-04-11 18:10:56 +0000
committerDerrick Lyndon Pallas <derrick@argosylabs.com>2019-04-11 18:20:53 +0000
commitd74520768b32c35eae422f2b9dda9a1bf494122d (patch)
tree178dea2cec05fca812d6101f611ac0d56477bbd7
parent3385df9cc9b9bcfd35539c765c9c58885206a47e (diff)
OfflinePacketFilter: avoid leaks on error in init
-rw-r--r--src/offline_packet_filter.cpp8
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());
}
}