Check the header of dehacked files and make sure we only load valid
dehacked files. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 182
This commit is contained in:
parent
6a9e5dd7e7
commit
c8b201dd2a
1 changed files with 31 additions and 1 deletions
|
|
@ -1,7 +1,7 @@
|
|||
// Emacs style mode select -*- C++ -*-
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Id: deh_main.c 174 2005-10-08 20:14:38Z fraggle $
|
||||
// $Id: deh_main.c 182 2005-10-09 20:06:50Z fraggle $
|
||||
//
|
||||
// Copyright(C) 2005 Simon Howard
|
||||
//
|
||||
|
|
@ -21,6 +21,10 @@
|
|||
// 02111-1307, USA.
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.6 2005/10/09 20:06:50 fraggle
|
||||
// Check the header of dehacked files and make sure we only load valid
|
||||
// dehacked files.
|
||||
//
|
||||
// Revision 1.5 2005/10/08 20:14:38 fraggle
|
||||
// Dehacked "Sound" section support
|
||||
//
|
||||
|
|
@ -54,6 +58,8 @@
|
|||
#include "deh_defs.h"
|
||||
#include "deh_io.h"
|
||||
|
||||
static char deh_signature[] = "Patch File for DeHackEd v3.0\n";
|
||||
|
||||
// deh_ammo.c:
|
||||
extern deh_section_t deh_section_ammo;
|
||||
// deh_cheat.c:
|
||||
|
|
@ -196,6 +202,21 @@ boolean DEH_ParseAssignment(char *line, char **variable_name, char **value)
|
|||
return true;
|
||||
}
|
||||
|
||||
static boolean CheckSignature(deh_context_t *context)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i<strlen(deh_signature); ++i)
|
||||
{
|
||||
int c = DEH_GetChar(context);
|
||||
|
||||
if (c != deh_signature[i])
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Parses a dehacked file by reading from the context
|
||||
|
||||
static void DEH_ParseContext(deh_context_t *context)
|
||||
|
|
@ -205,6 +226,15 @@ static void DEH_ParseContext(deh_context_t *context)
|
|||
void *tag = NULL;
|
||||
char *line;
|
||||
|
||||
// Read the header and check it matches the signature
|
||||
|
||||
if (!CheckSignature(context))
|
||||
{
|
||||
DEH_Error(context, "This is not a dehacked v3.0 patch file!");
|
||||
}
|
||||
|
||||
// Read the file
|
||||
|
||||
for (;;)
|
||||
{
|
||||
// read a new line
|
||||
|
|
|
|||
Loading…
Reference in a new issue