Skip to content

Commit

Permalink
Fix uses of sscanf not checking return values
Browse files Browse the repository at this point in the history
#91
  • Loading branch information
SamVanheer committed Nov 28, 2021
1 parent bed2ed9 commit 3e9a8f0
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 9 deletions.
20 changes: 15 additions & 5 deletions cl_dll/vgui_SchemeManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,11 +145,21 @@ static byte* LoadFileByResolution(const char* filePrefix, int xRes, const char*
static void ParseRGBAFromString(byte colorArray[4], const char* colorVector)
{
int r, g, b, a;
sscanf(colorVector, "%d %d %d %d", &r, &g, &b, &a);
colorArray[0] = r;
colorArray[1] = g;
colorArray[2] = b;
colorArray[3] = a;
if (4 == sscanf(colorVector, "%d %d %d %d", &r, &g, &b, &a))
{
colorArray[0] = r;
colorArray[1] = g;
colorArray[2] = b;
colorArray[3] = a;
}
else
{
//Pure white for easier debugging
colorArray[0] = 255;
colorArray[1] = 255;
colorArray[2] = 255;
colorArray[3] = 255;
}
}

//-----------------------------------------------------------------------------
Expand Down
4 changes: 2 additions & 2 deletions dlls/lights.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,9 @@ bool CEnvLight::KeyValue(KeyValueData* pkvd)
{
if (FStrEq(pkvd->szKeyName, "_light"))
{
int r, g, b, v, j;
int r = 0, g = 0, b = 0, v = 0;
char szColor[64];
j = sscanf(pkvd->szValue, "%d %d %d %d\n", &r, &g, &b, &v);
const int j = sscanf(pkvd->szValue, "%d %d %d %d\n", &r, &g, &b, &v);
if (j == 1)
{
g = b = r;
Expand Down
3 changes: 1 addition & 2 deletions game_shared/voice_gamemgr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -178,9 +178,8 @@ bool CVoiceGameMgr::ClientCommand(CBasePlayer* pPlayer, const char* cmd)
for (int i = 1; i < CMD_ARGC(); i++)
{
uint32 mask = 0;
sscanf(CMD_ARGV(i), "%x", &mask);

if (i <= VOICE_MAX_PLAYERS_DW)
if (1 == sscanf(CMD_ARGV(i), "%x", &mask) && i <= VOICE_MAX_PLAYERS_DW)
{
VoiceServerDebug("CVoiceGameMgr::ClientCommand: vban (0x%x) from %d\n", mask, playerClientIndex);
g_BanMasks[playerClientIndex].SetDWord(i - 1, mask);
Expand Down

0 comments on commit 3e9a8f0

Please sign in to comment.