Fix memory leak in pretest
authorIdo Barnea <[email protected]>
Wed, 30 Nov 2016 12:57:03 +0000 (14:57 +0200)
committerIdo Barnea <[email protected]>
Wed, 30 Nov 2016 12:57:03 +0000 (14:57 +0200)
Signed-off-by: Ido Barnea <[email protected]>
src/pre_test.cpp
src/pre_test.h
src/utl_ip.h

index df753be..7127645 100644 (file)
@@ -35,6 +35,15 @@ CPretestOnePortInfo::CPretestOnePortInfo() {
     m_stats.clear();
 }
 
+CPretestOnePortInfo::~CPretestOnePortInfo() {
+    for (std::vector<COneIPInfo *>::iterator it = m_src_info.begin(); it != m_src_info.end(); ++it) {
+        delete *it;
+    }
+    for (std::vector<COneIPInfo *>::iterator it = m_dst_info.begin(); it != m_dst_info.end(); ++it) {
+        delete *it;
+    }
+}
+
 void CPretestOnePortInfo::add_src(uint32_t ip, uint16_t vlan, MacAddress mac) {
     COneIPv4Info *one_ip = new COneIPv4Info(ip, vlan, mac);
     assert(one_ip);
index 9573ff0..14b444c 100644 (file)
@@ -49,6 +49,7 @@ class CPretestOnePortInfo {
 
  public:
     CPretestOnePortInfo();
+    ~CPretestOnePortInfo();
     void add_src(uint32_t ip, uint16_t vlan, MacAddress mac);
     void add_dst(uint32_t ip, uint16_t vlan);
     void add_src(uint16_t ip[8], uint16_t vlan, MacAddress mac);
index 95db588..27bb6c8 100644 (file)
@@ -105,6 +105,7 @@ class COneIPInfo {
     } COneIPInfo_ip_types;
 
  public:
+    virtual ~COneIPInfo() {}
     virtual void get_mac(uint8_t *mac) const {
         m_mac.copyToArray(mac);
     }
@@ -154,6 +155,7 @@ class COneIPv4Info : public COneIPInfo {
     COneIPv4Info(uint32_t ip, uint16_t vlan, MacAddress mac, uint8_t port) : COneIPInfo(vlan, mac, port) {
         m_ip = ip;
     }
+    ~COneIPv4Info() {};
     uint32_t get_ip() {return m_ip;}
     virtual uint8_t ip_ver() const {return IP4_VER;}
     virtual uint32_t get_arp_req_len() const {return 60;}
@@ -194,6 +196,7 @@ class COneIPv6Info : public COneIPInfo {
     COneIPv6Info(uint16_t ip[8], uint16_t vlan, MacAddress mac, uint8_t port) : COneIPInfo(vlan, mac, port) {
         memcpy(m_ip, ip, sizeof(m_ip));
     }
+    ~COneIPv6Info() {}
 
     const uint8_t *get_ipv6() {return (uint8_t *)m_ip;}
     virtual uint8_t ip_ver() const {return IP6_VER;}