summaryrefslogtreecommitdiffstats
path: root/client.c
diff options
context:
space:
mode:
authornicm <nicm>2014-01-09 21:20:45 +0000
committernicm <nicm>2014-01-09 21:20:45 +0000
commitb185449d073b376eb305ff2a68d87fd82ed56377 (patch)
tree97002ce16fd890d029916360de318a39c4b8f1ae /client.c
parentc2cac69a22f70cb690ccc97425623f8405013dcf (diff)
Fix a memory/fd leak reported by Tiago Cunha.
Diffstat (limited to 'client.c')
-rw-r--r--client.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/client.c b/client.c
index 1458963c..4cf73fb9 100644
--- a/client.c
+++ b/client.c
@@ -118,10 +118,15 @@ retry:
close(fd);
xasprintf(&lockfile, "%s.lock", path);
- if ((lockfd = client_get_lock(lockfile)) == -1)
+ if ((lockfd = client_get_lock(lockfile)) == -1) {
+ free(lockfile);
goto retry;
- if (unlink(path) != 0 && errno != ENOENT)
+ }
+ if (unlink(path) != 0 && errno != ENOENT) {
+ free(lockfile);
+ close(lockfd);
return (-1);
+ }
fd = server_start(lockfd, lockfile);
free(lockfile);
close(lockfd);