From 2fd676eb7ddc3bc3fabdb2049af3aa6936d4d63b Mon Sep 17 00:00:00 2001 From: Olaf Rempel Date: Sun, 16 Apr 2006 21:28:27 +0200 Subject: [PATCH] fix a few memleaks - delete [] must be used when mem is allocated with new [] --- config.cpp | 3 ++- logging.cpp | 15 +++++---------- logging.h | 2 +- multisock.cpp | 4 ++-- netpkt.cpp | 4 ++-- 5 files changed, 12 insertions(+), 16 deletions(-) diff --git a/config.cpp b/config.cpp index 7a571f3..585238b 100644 --- a/config.cpp +++ b/config.cpp @@ -141,6 +141,7 @@ bool Config::parseFile(const char* name) if (!(fz = fopen(name, "r"))) { LogSystem::log(LOG_ERROR, "config_parse(): can not open %s", name); + delete [] row; return false; } @@ -179,7 +180,7 @@ bool Config::parseFile(const char* name) } fclose(fz); - delete row; + delete [] row; return ret; } diff --git a/logging.cpp b/logging.cpp index 689dc0a..b39dfb4 100644 --- a/logging.cpp +++ b/logging.cpp @@ -7,18 +7,13 @@ #include "logging.h" -/* we need this for packet dumps! */ -#define BUFLEN 8192 - -LogSystem::LogSystem() : output(0), priority(0) +LogSystem::LogSystem() +: output(0), priority(0) { - buffer = new char[BUFLEN]; } LogSystem::~LogSystem() { - delete buffer; - if (output) delete output; } @@ -76,13 +71,13 @@ void LogSystem::log(int prio, const char* fmt, ...) int len; va_start(az, fmt); - len = vsnprintf(ls->buffer, BUFLEN, fmt, az); + len = vsnprintf(ls->buffer, sizeof(ls->buffer), fmt, az); va_end(az); if (errno) { - strncpy(ls->buffer + len, ": ", BUFLEN - len); + strncpy(ls->buffer + len, ": ", sizeof(ls->buffer) - len); len += 2; - strncpy(ls->buffer + len, strerror(errno), BUFLEN - len); + strncpy(ls->buffer + len, strerror(errno), sizeof(ls->buffer) - len); errno = 0; } diff --git a/logging.h b/logging.h index 89c136d..bacadb4 100644 --- a/logging.h +++ b/logging.h @@ -42,7 +42,7 @@ private: LogOutput *output; int priority; - char* buffer; + char buffer[8192]; // we need this for (large) packet dumps! }; class StdErrLog : public LogOutput { diff --git a/multisock.cpp b/multisock.cpp index b134071..b5249f7 100644 --- a/multisock.cpp +++ b/multisock.cpp @@ -28,7 +28,7 @@ MultiSock::MultiSock(Config& conf) FILE* fp = fopen(DEVFILE, "r"); if (fp == NULL) { LogSystem::log(LOG_CRIT, "MultiSock(): can not open " DEVFILE); - free(buf); + delete [] buf; return; } @@ -66,7 +66,7 @@ MultiSock::MultiSock(Config& conf) delete it; fclose(fp); - delete buf; + delete [] buf; if (ifaceList.isEmpty()) LogSystem::log(LOG_CRIT, "No useable Interfaces found!"); diff --git a/netpkt.cpp b/netpkt.cpp index 631d869..1f3388e 100644 --- a/netpkt.cpp +++ b/netpkt.cpp @@ -33,7 +33,7 @@ NetPkt::NetPkt(int alloc) NetPkt::~NetPkt() { if (alloc > 0) - delete data; + delete [] data; } int NetPkt::show(char* buf, int size) @@ -170,7 +170,7 @@ void NetPkt::merge(NetPkt* pkt) memcpy(new_data, data, size); if (alloc) - delete data; + delete [] data; data = new_data; alloc = new_alloc;