aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2022-03-27 22:17:31 -0400
committerJason A. Donenfeld <Jason@zx2c4.com>2022-03-27 22:26:54 -0400
commit05fedc64c18555f391dbf766630ab7f6f42d22d2 (patch)
tree943b30cb982e7b03cc25b08d6e25059ecbec8c38
parentMake clear that it's meant for import (diff)
downloadseedrng-05fedc64c18555f391dbf766630ab7f6f42d22d2.tar.xz
seedrng-05fedc64c18555f391dbf766630ab7f6f42d22d2.zip
Avoid closing -1 fd on exit
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r--seedrng.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/seedrng.c b/seedrng.c
index f4c96e7..33381a8 100644
--- a/seedrng.c
+++ b/seedrng.c
@@ -365,7 +365,7 @@ int main(int argc __attribute__((unused)), char *argv[] __attribute__((unused)))
{
static const char seedrng_prefix[] = "SeedRNG v1 Old+New Prefix";
static const char seedrng_failure[] = "SeedRNG v1 No New Seed Failure";
- int ret, fd, lock, program_ret = 0;
+ int ret, fd = -1, lock, program_ret = 0;
uint8_t new_seed[MAX_SEED_LEN];
size_t new_seed_len;
bool new_seed_creditable;
@@ -393,7 +393,8 @@ int main(int argc __attribute__((unused)), char *argv[] __attribute__((unused)))
lock = open(LOCK_FILE, O_WRONLY | O_CREAT, 0000);
if (lock < 0 || flock(lock, LOCK_EX) < 0) {
fprintf(stderr, "ERROR: Unable to open lock file: %s\n", strerror(errno));
- return 1;
+ program_ret = 1;
+ goto out;
}
ret = seed_from_file_if_exists(NON_CREDITABLE_SEED, false, &hash);
@@ -432,7 +433,9 @@ int main(int argc __attribute__((unused)), char *argv[] __attribute__((unused)))
program_ret |= 1 << 6;
}
out:
- close(fd);
- close(lock);
+ if (fd >= 0)
+ close(fd);
+ if (lock >= 0)
+ close(lock);
return program_ret;
}