From 586a70ea1d7a4b6af842cc96bba790b695ecee06 Mon Sep 17 00:00:00 2001 From: Dale Weiler Date: Wed, 14 Aug 2013 07:41:09 +0000 Subject: [PATCH] Handle some more errors --- pak.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/pak.c b/pak.c index abb389b..4bf7e5f 100644 --- a/pak.c +++ b/pak.c @@ -351,11 +351,10 @@ static bool pak_insert_one(pak_file_t *pak, const char *file) { * the directory entry, and the actual contents of the file * to the PAK file itself. */ - if (fs_file_seek(fp, 0, SEEK_END) != 0 || ((len = fs_file_tell(fp)) < 0)) { - fs_file_close(fp); - return false; - } - fs_file_seek(fp, 0, SEEK_SET); + if (fs_file_seek(fp, 0, SEEK_END) != 0 || ((len = fs_file_tell(fp)) < 0)) + goto err; + if (fs_file_seek(fp, 0, SEEK_SET) != 0) + goto err; dir.len = len; dir.pos = fs_file_tell(pak->handle); @@ -364,10 +363,8 @@ static bool pak_insert_one(pak_file_t *pak, const char *file) { * We're limited to 56 bytes for a file name string, that INCLUDES * the directory and '/' seperators. */ - if (strlen(file) >= 56) { - fs_file_close(fp); - return false; - } + if (strlen(file) >= 56) + goto err; util_strncpy(dir.name, file, strlen(file)); @@ -375,10 +372,8 @@ static bool pak_insert_one(pak_file_t *pak, const char *file) { * Allocate some memory for loading in the data that will be * redirected into the PAK file. */ - if (!(dat = (unsigned char *)mem_a(dir.len))) { - fs_file_close(fp); - return false; - } + if (!(dat = (unsigned char *)mem_a(dir.len))) + goto err; fs_file_read (dat, dir.len, 1, fp); fs_file_close(fp); @@ -391,6 +386,10 @@ static bool pak_insert_one(pak_file_t *pak, const char *file) { vec_push(pak->directories, dir); return true; + +err: + fs_file_close(fp); + return false; } /* -- 2.39.2