Browse Source

fix: memory leak in IfaceMgr::receive4(), reference in IfaceMgr test (cppcheck)

Tomek Mrugalski 13 years ago
parent
commit
0cfe92d007
2 changed files with 2 additions and 4 deletions
  1. 1 3
      src/lib/dhcp/iface_mgr.cc
  2. 1 1
      src/lib/dhcp/tests/iface_mgr_unittest.cc

+ 1 - 3
src/lib/dhcp/iface_mgr.cc

@@ -716,7 +716,7 @@ IfaceMgr::receive4() {
     struct in_addr to_addr;
     boost::shared_ptr<Pkt4> pkt;
     const uint32_t RCVBUFSIZE = 1500;
-    uint8_t* buf = (uint8_t*) malloc(RCVBUFSIZE);
+    static uint8_t buf[RCVBUFSIZE];
 
     memset(&control_buf_[0], 0, control_buf_len_);
     memset(&from_addr, 0, sizeof(from_addr));
@@ -747,7 +747,6 @@ IfaceMgr::receive4() {
 
     if (result < 0) {
         cout << "Failed to receive UDP4 data." << endl;
-        delete buf;
         return (boost::shared_ptr<Pkt4>()); // NULL
     }
 
@@ -784,7 +783,6 @@ IfaceMgr::receive4() {
     }
     if (!found_pktinfo) {
         cout << "Unable to find pktinfo" << endl;
-        delete buf;
         return (boost::shared_ptr<Pkt4>()); // NULL
     }
 #endif

+ 1 - 1
src/lib/dhcp/tests/iface_mgr_unittest.cc

@@ -675,7 +675,7 @@ size_t parse_mac(const std::string& textMac, uint8_t* mac, size_t macLen) {
 ///
 /// @param textFile name of a text file that holds output of ifconfig -a
 /// @param ifaces empty list of interfaces to be filled
-void parse_ifconfig(const std::string textFile, IfaceMgr::IfaceCollection& ifaces) {
+void parse_ifconfig(const std::string& textFile, IfaceMgr::IfaceCollection& ifaces) {
     fstream f(textFile.c_str());
 
     bool first_line = true;