DEADSOFTWARE

added sanity check for some map parameters
authorKetmar Dark <ketmar@ketmar.no-ip.org>
Sat, 16 Apr 2016 16:00:15 +0000 (19:00 +0300)
committerKetmar Dark <ketmar@ketmar.no-ip.org>
Sat, 16 Apr 2016 16:00:54 +0000 (19:00 +0300)
src/game/g_panel.pas

index 8a2265af842d9a546aa5eea28bd1c384875b43b1..9672be8f5834b37e169c9410123a4cf9bb6ac510 100644 (file)
@@ -61,8 +61,8 @@ type
 implementation
 
 uses
-  g_basic, g_map, MAPDEF, g_game, e_graphics,
-  g_console, g_language;
+  SysUtils, g_basic, g_map, MAPDEF, g_game, e_graphics,
+  g_console, g_language, e_log;
 
 const
   PANEL_SIGNATURE = $4C4E4150; // 'PANL'
@@ -197,7 +197,11 @@ begin
     SaveIt := True;
 
 // Åñëè íå ñïåöòåêñòóðà, òî çàäàåì ðàçìåðû:
-  if not g_Map_IsSpecialTexture(Textures[PanelRec.TextureNum].TextureName) then
+  if PanelRec.TextureNum > High(Textures) then
+  begin
+    e_WriteLog(Format('WTF?! PanelRec.TextureNum is out of limits! (%d : %d)', [PanelRec.TextureNum, High(Textures)]), MSG_FATALERROR);
+  end
+  else if not g_Map_IsSpecialTexture(Textures[PanelRec.TextureNum].TextureName) then
   begin
     FTextureWidth := Textures[PanelRec.TextureNum].Width;
     FTextureHeight := Textures[PanelRec.TextureNum].Height;