/*
-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
}
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));
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;