1
0

Added type checking to map loading.

This commit is contained in:
Howaner 2014-09-26 14:31:52 +02:00
parent 157cad9007
commit 749c6092d3
2 changed files with 11 additions and 11 deletions

View File

@ -130,14 +130,14 @@ bool cMapSerializer::LoadMapFromNBT(const cParsedNBT & a_NBT)
} }
int CurrLine = a_NBT.FindChildByName(Data, "scale"); int CurrLine = a_NBT.FindChildByName(Data, "scale");
if (CurrLine >= 0) if ((CurrLine >= 0) && (a_NBT.GetType(CurrLine) == TAG_Byte))
{ {
unsigned int Scale = a_NBT.GetByte(CurrLine); unsigned int Scale = (unsigned int)a_NBT.GetByte(CurrLine);
m_Map->SetScale(Scale); m_Map->SetScale(Scale);
} }
CurrLine = a_NBT.FindChildByName(Data, "dimension"); CurrLine = a_NBT.FindChildByName(Data, "dimension");
if (CurrLine >= 0) if ((CurrLine >= 0) && (a_NBT.GetType(CurrLine) == TAG_Byte))
{ {
eDimension Dimension = (eDimension) a_NBT.GetByte(CurrLine); eDimension Dimension = (eDimension) a_NBT.GetByte(CurrLine);
@ -149,9 +149,9 @@ bool cMapSerializer::LoadMapFromNBT(const cParsedNBT & a_NBT)
} }
CurrLine = a_NBT.FindChildByName(Data, "width"); CurrLine = a_NBT.FindChildByName(Data, "width");
if (CurrLine >= 0) if ((CurrLine >= 0) && (a_NBT.GetType(CurrLine) == TAG_Short))
{ {
unsigned int Width = a_NBT.GetShort(CurrLine); unsigned int Width = (unsigned int)a_NBT.GetShort(CurrLine);
if (Width != 128) if (Width != 128)
{ {
return false; return false;
@ -160,9 +160,9 @@ bool cMapSerializer::LoadMapFromNBT(const cParsedNBT & a_NBT)
} }
CurrLine = a_NBT.FindChildByName(Data, "height"); CurrLine = a_NBT.FindChildByName(Data, "height");
if (CurrLine >= 0) if ((CurrLine >= 0) && (a_NBT.GetType(CurrLine) == TAG_Short))
{ {
unsigned int Height = a_NBT.GetShort(CurrLine); unsigned int Height = (unsigned int)a_NBT.GetShort(CurrLine);
if (Height >= 256) if (Height >= 256)
{ {
return false; return false;
@ -171,14 +171,14 @@ bool cMapSerializer::LoadMapFromNBT(const cParsedNBT & a_NBT)
} }
CurrLine = a_NBT.FindChildByName(Data, "xCenter"); CurrLine = a_NBT.FindChildByName(Data, "xCenter");
if (CurrLine >= 0) if ((CurrLine >= 0) && (a_NBT.GetType(CurrLine) == TAG_Int))
{ {
int CenterX = a_NBT.GetInt(CurrLine); int CenterX = a_NBT.GetInt(CurrLine);
m_Map->m_CenterX = CenterX; m_Map->m_CenterX = CenterX;
} }
CurrLine = a_NBT.FindChildByName(Data, "zCenter"); CurrLine = a_NBT.FindChildByName(Data, "zCenter");
if (CurrLine >= 0) if ((CurrLine >= 0) && (a_NBT.GetType(CurrLine) == TAG_Int))
{ {
int CenterZ = a_NBT.GetInt(CurrLine); int CenterZ = a_NBT.GetInt(CurrLine);
m_Map->m_CenterZ = CenterZ; m_Map->m_CenterZ = CenterZ;

View File

@ -28,10 +28,10 @@ public:
cMapSerializer(const AString& a_WorldName, cMap * a_Map); cMapSerializer(const AString& a_WorldName, cMap * a_Map);
/** Try to load the scoreboard */ /** Try to load the map */
bool Load(void); bool Load(void);
/** Try to save the scoreboard */ /** Try to save the map */
bool Save(void); bool Save(void);