summaryrefslogtreecommitdiffstats
path: root/usr.bin
diff options
context:
space:
mode:
authoremaste <emaste@FreeBSD.org>2014-06-11 17:19:57 +0000
committeremaste <emaste@FreeBSD.org>2014-06-11 17:19:57 +0000
commited2e02ec739554c703bb730ff21abfc062445087 (patch)
tree5a4e8dfbb826791008c57273d1417dfddd72a542 /usr.bin
parentbe746d4f98614a8709458715a0b43055a96d6d76 (diff)
downloadFreeBSD-src-ed2e02ec739554c703bb730ff21abfc062445087.zip
FreeBSD-src-ed2e02ec739554c703bb730ff21abfc062445087.tar.gz
Avoid leaking file pointer on error
CID: 1222506, 1222505
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/vtfontcvt/vtfontcvt.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/usr.bin/vtfontcvt/vtfontcvt.c b/usr.bin/vtfontcvt/vtfontcvt.c
index 56f7510..a6735b4 100644
--- a/usr.bin/vtfontcvt/vtfontcvt.c
+++ b/usr.bin/vtfontcvt/vtfontcvt.c
@@ -331,6 +331,7 @@ parse_file(const char *filename, unsigned int map_idx)
{
FILE *fp;
size_t len;
+ int rv;
fp = fopen(filename, "r");
if (fp == NULL) {
@@ -339,8 +340,11 @@ parse_file(const char *filename, unsigned int map_idx)
}
len = strlen(filename);
if (len > 4 && strcasecmp(filename + len - 4, ".hex") == 0)
- return parse_hex(fp, map_idx);
- return parse_bdf(fp, map_idx);
+ rv = parse_hex(fp, map_idx);
+ else
+ rv = parse_bdf(fp, map_idx);
+ fclose(fp);
+ return (rv);
}
static void
@@ -447,6 +451,7 @@ write_fnt(const char *filename)
fh.map_count[3] = htobe32(map_folded_count[3]);
if (fwrite(&fh, sizeof fh, 1, fp) != 1) {
perror(filename);
+ fclose(fp);
return (1);
}
@@ -456,9 +461,11 @@ write_fnt(const char *filename)
write_mappings(fp, VFNT_MAP_BOLD) != 0 ||
write_mappings(fp, 3) != 0) {
perror(filename);
+ fclose(fp);
return (1);
}
+ fclose(fp);
return (0);
}
OpenPOWER on IntegriCloud