Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.zx2c4.com/cgit.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hesse <mail@eworm.de>2015-10-10 17:56:28 +0300
committerJason A. Donenfeld <Jason@zx2c4.com>2015-10-10 22:41:04 +0300
commit76dc7a3371e487fdc9de7b3b4c991fe370598f0e (patch)
treed64fec2f225fec6c89f8a4cbe48b23e04750ef04 /cache.c
parented5dccbeaab5c8b30e1c2fe8890fa098537a2621 (diff)
cache: fix resource leak: close file handle before return
Coverity-id: 13910 Signed-off-by: Christian Hesse <mail@eworm.de>
Diffstat (limited to 'cache.c')
-rw-r--r--cache.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/cache.c b/cache.c
index 57c8918..b169d20 100644
--- a/cache.c
+++ b/cache.c
@@ -215,19 +215,25 @@ static int fill_slot(struct cache_slot *slot)
return errno;
/* Redirect stdout to lockfile */
- if (dup2(slot->lock_fd, STDOUT_FILENO) == -1)
+ if (dup2(slot->lock_fd, STDOUT_FILENO) == -1) {
+ close(tmp);
return errno;
+ }
/* Generate cache content */
slot->fn();
/* update stat info */
- if (fstat(slot->lock_fd, &slot->cache_st))
+ if (fstat(slot->lock_fd, &slot->cache_st)) {
+ close(tmp);
return errno;
+ }
/* Restore stdout */
- if (dup2(tmp, STDOUT_FILENO) == -1)
+ if (dup2(tmp, STDOUT_FILENO) == -1) {
+ close(tmp);
return errno;
+ }
/* Close the temporary filedescriptor */
if (close(tmp))