summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIdo Barnea <ibarnea@cisco.com>2016-11-30 14:57:03 +0200
committerIdo Barnea <ibarnea@cisco.com>2016-11-30 14:57:03 +0200
commit3beb07058c3781d9f3ce888be636b6484f750c96 (patch)
tree2ff894c46352ecb158981bf6fab90dfa26c952d2
parent2ded6e3d81538e2b0e016463ab8a56b08c075cbd (diff)
Fix memory leak in pretest
Signed-off-by: Ido Barnea <ibarnea@cisco.com>
-rw-r--r--src/pre_test.cpp9
-rw-r--r--src/pre_test.h1
-rw-r--r--src/utl_ip.h3
3 files changed, 13 insertions, 0 deletions
diff --git a/src/pre_test.cpp b/src/pre_test.cpp
index df753be5..7127645d 100644
--- a/src/pre_test.cpp
+++ b/src/pre_test.cpp
@@ -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);
diff --git a/src/pre_test.h b/src/pre_test.h
index 9573ff02..14b444cf 100644
--- a/src/pre_test.h
+++ b/src/pre_test.h
@@ -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);
diff --git a/src/utl_ip.h b/src/utl_ip.h
index 95db588a..27bb6c81 100644
--- a/src/utl_ip.h
+++ b/src/utl_ip.h
@@ -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;}