Fix incomplete sanity check in cs_get_weapon_info()

This commit is contained in:
Arkshine 2016-02-25 22:30:06 +01:00
parent da2abb9c3b
commit 28a0b0626b

View File

@ -1889,40 +1889,41 @@ static cell AMX_NATIVE_CALL cs_get_weapon_info(AMX* amx, cell* params)
} }
int weapon_id = params[1]; int weapon_id = params[1];
int info_type = params[2];
if (weapon_id <= CSW_NONE || weapon_id == CSW_C4 || weapon_id == CSW_KNIFE || weapon_id > CSW_LAST_WEAPON) WeaponInfoStruct *info;
if (weapon_id <= CSW_NONE || weapon_id > CSW_LAST_WEAPON || !(info = GetWeaponInfo(weapon_id)))
{ {
MF_LogError(amx, AMX_ERR_NATIVE, "Invalid weapon id: %d", weapon_id); MF_LogError(amx, AMX_ERR_NATIVE, "Invalid weapon id: %d", weapon_id);
return 0; return 0;
} }
int info_type = params[2];
switch (info_type) switch (info_type)
{ {
case CS_WEAPONINFO_COST: case CS_WEAPONINFO_COST:
{ {
return GetWeaponInfo(weapon_id)->cost; return info->cost;
} }
case CS_WEAPONINFO_CLIP_COST: case CS_WEAPONINFO_CLIP_COST:
{ {
return GetWeaponInfo(weapon_id)->clipCost; return info->clipCost;
} }
case CS_WEAPONINFO_BUY_CLIP_SIZE: case CS_WEAPONINFO_BUY_CLIP_SIZE:
{ {
return GetWeaponInfo(weapon_id)->buyClipSize; return info->buyClipSize;
} }
case CS_WEAPONINFO_GUN_CLIP_SIZE: case CS_WEAPONINFO_GUN_CLIP_SIZE:
{ {
return GetWeaponInfo(weapon_id)->gunClipSize; return info->gunClipSize;
} }
case CS_WEAPONINFO_MAX_ROUNDS: case CS_WEAPONINFO_MAX_ROUNDS:
{ {
return GetWeaponInfo(weapon_id)->maxRounds; return info->maxRounds;
} }
case CS_WEAPONINFO_AMMO_TYPE: case CS_WEAPONINFO_AMMO_TYPE:
{ {
return GetWeaponInfo(weapon_id)->ammoType; return info->ammoType;
} }
} }