main: fix some resource leaks

This fixes some resources leaks mostly in error patches.

Coverity: #1330236, #1330237, #1330238
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
Hauke Mehrtens 2019-09-02 21:34:15 +02:00
parent 5a52b37990
commit f34a383eee

12
main.c
View File

@ -129,6 +129,7 @@ get_file(const char *filename, char *buf, int buflen)
len = fread(buf, 1, buflen - 1, f); len = fread(buf, 1, buflen - 1, f);
buf[len] = 0; buf[len] = 0;
fclose(f);
} }
static bool static bool
@ -171,6 +172,7 @@ static int verify(const char *msgfile)
if (!get_base64_file(sigfile, &sig, sizeof(sig), buf, sizeof(buf)) || if (!get_base64_file(sigfile, &sig, sizeof(sig), buf, sizeof(buf)) ||
memcmp(sig.pkalg, "Ed", 2) != 0) { memcmp(sig.pkalg, "Ed", 2) != 0) {
fprintf(stderr, "Failed to decode signature\n"); fprintf(stderr, "Failed to decode signature\n");
fclose(f);
return 1; return 1;
} }
@ -183,6 +185,7 @@ static int verify(const char *msgfile)
if (!get_base64_file(pubkeyfile, &pkey, sizeof(pkey), buf, sizeof(buf)) || if (!get_base64_file(pubkeyfile, &pkey, sizeof(pkey), buf, sizeof(buf)) ||
memcmp(pkey.pkalg, "Ed", 2) != 0) { memcmp(pkey.pkalg, "Ed", 2) != 0) {
fprintf(stderr, "Failed to decode public key\n"); fprintf(stderr, "Failed to decode public key\n");
fclose(f);
return 1; return 1;
} }
@ -292,11 +295,16 @@ static int generate(void)
FILE *f; FILE *f;
f = fopen("/dev/urandom", "r"); f = fopen("/dev/urandom", "r");
if (!f || if (!f) {
fread(skey.fingerprint, sizeof(skey.fingerprint), 1, f) != 1 || fprintf(stderr, "Can't open /dev/urandom\n");
return 1;
}
if (fread(skey.fingerprint, sizeof(skey.fingerprint), 1, f) != 1 ||
fread(skey.seckey, EDSIGN_SECRET_KEY_SIZE, 1, f) != 1 || fread(skey.seckey, EDSIGN_SECRET_KEY_SIZE, 1, f) != 1 ||
fread(skey.salt, sizeof(skey.salt), 1, f) != 1) { fread(skey.salt, sizeof(skey.salt), 1, f) != 1) {
fprintf(stderr, "Can't read data from /dev/urandom\n"); fprintf(stderr, "Can't read data from /dev/urandom\n");
fclose(f);
return 1; return 1;
} }
if (f) if (f)