]> git.mxchange.org Git - quix0rs-blobwars.git/blobdiff - src/CPak.cpp
Capitalize Makefiles.
[quix0rs-blobwars.git] / src / CPak.cpp
index 0d8c0fa3415dc183bcee03c223f1e344b14dbf16..1872fd930bf9df9330f3a6ae603cf3d8b78b0fdc 100644 (file)
@@ -1,5 +1,6 @@
 /*
-Copyright (C) 2004 Parallel Realities
+Copyright (C) 2004-2011 Parallel Realities
+Copyright (C) 2011-2015 Perpendicular Dimensions
 
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
@@ -66,8 +67,16 @@ void Pak::setPakFile(const char *pakFilename)
        }
 
        fseek(pak, (-sizeof(Uint32)) * 2, SEEK_END);
-       fread(&listPos, sizeof(Uint32), 1, pak);
-       fread(&numberOfFiles, sizeof(Uint32), 1, pak);
+       if (fread(&listPos, sizeof(Uint32), 1, pak) != 1)
+       {
+               fclose(pak);
+               showPakErrorAndExit();
+       }
+       if (fread(&numberOfFiles, sizeof(Uint32), 1, pak) != 1)
+       {
+               fclose(pak);
+               showPakErrorAndExit();
+       }
        
        debug(("Pak : File list resides at %d\n", (int)listPos));
        debug(("Pak : Number of files are %d\n", (int)numberOfFiles));
@@ -130,7 +139,11 @@ bool Pak::unpack(const char *filename, unsigned char **buffer)
        input = new unsigned char[(int)(currentFile->cSize * 1.01) + 12];
        *buffer = new unsigned char[currentFile->fSize + 1];
 
-       fread(input, 1, currentFile->cSize, pak);
+       if (fread(input, 1, currentFile->cSize, pak) != currentFile->cSize)
+       {
+               fclose(pak);
+               showPakErrorAndExit();
+       }
        
        uLongf fSize = (uLongf)currentFile->fSize;