diff options
author | Alan Hourihane <alanh@fairlite.co.uk> | 2011-12-01 12:04:22 +0000 |
---|---|---|
committer | Alan Coopersmith <alan.coopersmith@oracle.com> | 2011-12-05 20:34:12 -0800 |
commit | ff992be7b05483f9a0586a27ee0edb6d99580b84 (patch) | |
tree | 2beea8fe03848e12f43066bb30a55669853a3606 | |
parent | 29c9e101f7ad72556aa6b3dbc17d66a1ace9b2b1 (diff) |
Fix some resource & memory leaks in libxtrans.
Signed-off-by: Alan Hourihane <alanh@vmware.com>
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-rw-r--r-- | Xtrans.c | 1 | ||||
-rw-r--r-- | Xtranssock.c | 3 | ||||
-rw-r--r-- | Xtransutil.c | 2 |
3 files changed, 6 insertions, 0 deletions
@@ -549,6 +549,7 @@ TRANS(Reopen) (int type, int trans_id, int fd, char *port) if (ciptr == NULL) { prmsg (1,"Reopen: transport open failed\n"); + xfree(save_port); return NULL; } diff --git a/Xtranssock.c b/Xtranssock.c index 955516d..901d721 100644 --- a/Xtranssock.c +++ b/Xtranssock.c @@ -492,6 +492,7 @@ TRANS(SocketReopen) (int i _X_UNUSED, int type, int fd, char *port) if ((addr = (struct sockaddr *) xcalloc (1, portlen + 2)) == NULL) { prmsg (1, "SocketReopen: malloc(addr) failed\n"); + xfree (ciptr); return NULL; } ciptr->addr = (char *) addr; @@ -499,6 +500,8 @@ TRANS(SocketReopen) (int i _X_UNUSED, int type, int fd, char *port) if ((ciptr->peeraddr = (char *) xcalloc (1, portlen + 2)) == NULL) { prmsg (1, "SocketReopen: malloc(portaddr) failed\n"); + xfree (addr); + xfree (ciptr); return NULL; } ciptr->peeraddrlen = portlen + 2; diff --git a/Xtransutil.c b/Xtransutil.c index 5dd2453..dd36cae 100644 --- a/Xtransutil.c +++ b/Xtransutil.c @@ -586,6 +586,7 @@ trans_mkdir(const char *path, int mode) if (fstat(fd, &fbuf) == -1) { prmsg(1, "mkdir: ERROR: fstat failed for %s (%d)\n", path, errno); + close(fd); return -1; } /* @@ -597,6 +598,7 @@ trans_mkdir(const char *path, int mode) buf.st_ino != fbuf.st_ino) { prmsg(1, "mkdir: ERROR: inode for %s changed\n", path); + close(fd); return -1; } if (updateOwner && fchown(fd, 0, 0) == 0) |