From 93d086d81a23d9b9e7e09f54410f365104de33b2 Mon Sep 17 00:00:00 2001 From: Gregor Schneider Date: Wed, 2 Dec 2009 18:28:52 +0000 Subject: [PATCH] Martin Ettl : Fix various resource and memory leaks See issue #4974 for more details. svn path=/trunk/; revision=44364 --- reactos/base/applications/network/telnet/src/tnetwork.h | 2 +- reactos/base/applications/tsclient/rdesktop/printercache.c | 1 + reactos/base/applications/tsclient/rdesktop/rdesktop.c | 3 +++ reactos/base/applications/tsclient/rdesktop/uiports/qtwin.cpp | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/reactos/base/applications/network/telnet/src/tnetwork.h b/reactos/base/applications/network/telnet/src/tnetwork.h index 64dfb1179a7..bcc78c7012f 100644 --- a/reactos/base/applications/network/telnet/src/tnetwork.h +++ b/reactos/base/applications/network/telnet/src/tnetwork.h @@ -24,7 +24,7 @@ public: TNetwork(SOCKET s = 0): socket(s), local_echo(1), line_mode(1), net_type(TN_NETSOCKET), naws_func((Naws_func_t)NULL), local_address((char *)NULL) {} - ~TNetwork() {if(local_address) delete local_address;} + ~TNetwork() {if(local_address) delete[] local_address;} void SetSocket(SOCKET s); SOCKET GetSocket() {return socket;} diff --git a/reactos/base/applications/tsclient/rdesktop/printercache.c b/reactos/base/applications/tsclient/rdesktop/printercache.c index 38b38bbe5c2..c2d39bf5aa9 100644 --- a/reactos/base/applications/tsclient/rdesktop/printercache.c +++ b/reactos/base/applications/tsclient/rdesktop/printercache.c @@ -180,6 +180,7 @@ printercache_load_blob(char *printer_name, uint8 ** data) if (fstat(fd, &st)) { xfree(path); + close(fd); return 0; } diff --git a/reactos/base/applications/tsclient/rdesktop/rdesktop.c b/reactos/base/applications/tsclient/rdesktop/rdesktop.c index 425ce058b08..37e5f38fb61 100644 --- a/reactos/base/applications/tsclient/rdesktop/rdesktop.c +++ b/reactos/base/applications/tsclient/rdesktop/rdesktop.c @@ -1405,7 +1405,10 @@ load_licence(RDPCLIENT * This, unsigned char **data) return -1; if (fstat(fd, &st)) + { + close(fd); return -1; + } *data = (uint8 *) xmalloc(st.st_size); length = read(fd, *data, st.st_size); diff --git a/reactos/base/applications/tsclient/rdesktop/uiports/qtwin.cpp b/reactos/base/applications/tsclient/rdesktop/uiports/qtwin.cpp index 718ba2df052..a23727ea5dc 100644 --- a/reactos/base/applications/tsclient/rdesktop/uiports/qtwin.cpp +++ b/reactos/base/applications/tsclient/rdesktop/uiports/qtwin.cpp @@ -1475,6 +1475,8 @@ int load_licence(uint8 ** data) } if (fstat(fd, &st)) { + close(fd); + xfree(path); return -1; } *data = (uint8 *) xmalloc(st.st_size);