-Fixes in new resource file code: Added file length checks and set lump count to 1 for single lump files.

SVN r1558 (trunk)
This commit is contained in:
Christoph Oelckers 2009-04-24 22:31:35 +00:00
parent 1ea8777572
commit 2e90519c13
7 changed files with 61 additions and 42 deletions

View file

@ -334,6 +334,8 @@ FResourceFile *Check7Z(const char *filename, FileReader *file)
{
char head[k7zSignatureSize];
if (file->GetLength() >= k7zSignatureSize)
{
file->Seek(0, SEEK_SET);
file->Read(&head, k7zSignatureSize);
file->Seek(0, SEEK_SET);
@ -343,6 +345,7 @@ FResourceFile *Check7Z(const char *filename, FileReader *file)
if (rf->Open()) return rf;
delete rf;
}
}
return NULL;
}

View file

@ -138,6 +138,8 @@ FResourceFile *CheckGRP(const char *filename, FileReader *file)
{
char head[12];
if (file->GetLength() >= 12)
{
file->Seek(0, SEEK_SET);
file->Read(&head, 12);
file->Seek(0, SEEK_SET);
@ -147,6 +149,7 @@ FResourceFile *CheckGRP(const char *filename, FileReader *file)
if (rf->Open()) return rf;
delete rf;
}
}
return NULL;
}

View file

@ -80,6 +80,7 @@ bool FLumpFile::Open()
Lumps->Namespace = ns_global;
Lumps->Flags = 0;
Lumps->FullName = NULL;
NumLumps = 1;
return true;
}

View file

@ -130,6 +130,8 @@ FResourceFile *CheckPak(const char *filename, FileReader *file)
{
char head[4];
if (file->GetLength() >= 12)
{
file->Seek(0, SEEK_SET);
file->Read(&head, 4);
file->Seek(0, SEEK_SET);
@ -139,6 +141,7 @@ FResourceFile *CheckPak(const char *filename, FileReader *file)
if (rf->Open()) return rf;
delete rf;
}
}
return NULL;
}

View file

@ -235,6 +235,8 @@ FResourceFile *CheckRFF(const char *filename, FileReader *file)
{
char head[4];
if (file->GetLength() >= 16)
{
file->Seek(0, SEEK_SET);
file->Read(&head, 4);
file->Seek(0, SEEK_SET);
@ -244,6 +246,7 @@ FResourceFile *CheckRFF(const char *filename, FileReader *file)
if (rf->Open()) return rf;
delete rf;
}
}
return NULL;
}

View file

@ -328,6 +328,8 @@ FResourceFile *CheckWad(const char *filename, FileReader *file)
{
char head[4];
if (file->GetLength() >= 12)
{
file->Seek(0, SEEK_SET);
file->Read(&head, 4);
file->Seek(0, SEEK_SET);
@ -337,6 +339,7 @@ FResourceFile *CheckWad(const char *filename, FileReader *file)
if (rf->Open()) return rf;
delete rf;
}
}
return NULL;
}

View file

@ -391,6 +391,8 @@ FResourceFile *CheckZip(const char *filename, FileReader *file)
{
char head[4];
if (file->GetLength() >= sizeof(FZipLocalFileHeader))
{
file->Seek(0, SEEK_SET);
file->Read(&head, 4);
file->Seek(0, SEEK_SET);
@ -400,6 +402,7 @@ FResourceFile *CheckZip(const char *filename, FileReader *file)
if (rf->Open()) return rf;
delete rf;
}
}
return NULL;
}