diff options
author | emaste <emaste@FreeBSD.org> | 2014-06-11 17:19:57 +0000 |
---|---|---|
committer | emaste <emaste@FreeBSD.org> | 2014-06-11 17:19:57 +0000 |
commit | ed2e02ec739554c703bb730ff21abfc062445087 (patch) | |
tree | 5a4e8dfbb826791008c57273d1417dfddd72a542 /usr.bin | |
parent | be746d4f98614a8709458715a0b43055a96d6d76 (diff) | |
download | FreeBSD-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.c | 11 |
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); } |