Catch that one too
authorDale Weiler <killfieldengine@gmail.com>
Fri, 21 Jun 2013 23:51:49 +0000 (23:51 +0000)
committerDale Weiler <killfieldengine@gmail.com>
Fri, 21 Jun 2013 23:51:49 +0000 (23:51 +0000)
pak.c

diff --git a/pak.c b/pak.c
index ee647382da59cac608f009cc43cf0dc6b14157a1..5cece63d6122964acacd550141571c575339a148 100644 (file)
--- a/pak.c
+++ b/pak.c
@@ -334,6 +334,7 @@ static bool pak_extract_all(pak_file_t *pak, const char *dir) {
 static bool pak_insert_one(pak_file_t *pak, const char *file) {
     pak_directory_t dir;
     unsigned char  *dat;
+    long            len;
     FILE           *fp;
 
     /*
@@ -353,9 +354,13 @@ static bool pak_insert_one(pak_file_t *pak, const char *file) {
      * to the PAK file itself.
      */
     fs_file_seek(fp, 0, SEEK_END);
-    dir.len = fs_file_tell(fp);
+    if ((len = fs_file_tell(fp)) < 0) {
+        fs_file_close(fp);
+        return false;
+    }
     fs_file_seek(fp, 0, SEEK_SET);
 
+    dir.len = len;
     dir.pos = fs_file_tell(pak->handle);
 
     /*