10.04.2011, 16:15
Hi,
I can't understand why I get sscanf warning for buffer overflow? Strings sizes - good...
Command:
I can't understand why I get sscanf warning for buffer overflow? Strings sizes - good...
Command:
pawn Код:
COMMAND:direktorius( playerid, params[ ] )
{
if( GetPVarInt( playerid, "Administratorius" ) < 3 ) return SendClientMessage( playerid, -1, ""#h_Balta"["#h_Melyna"PRANEРIMAS"#h_Balta"]: Jыs neesate Administratorius" );
new
Tikrinimas[ 9 ][ 2 ],
Stringas[ 213 ]
;
sscanf( params, "s[9]", Tikrinimas[ 0 ] );
sscanf( params, "s[8]", Tikrinimas[ 1 ] );
if( ! strcmp( Tikrinimas[ 0 ], "paskirti", true ) )
{
new
ID,
Direktorius
;
if( sscanf( params[ strlen( Tikrinimas[ 0 ] ) ], "ud", ID, Direktorius ) ) return SendClientMessage( playerid, -1, ""#h_Balta"["#h_Melyna"PRANEРIMAS"#h_Balta"]: /direktorius paskirti <Vardas> <D. ID>" );
if( ID == INVALID_PLAYER_ID || ID == playerid ) return SendClientMessage( playerid, -1, ""#h_Balta"["#h_Melyna"PRANEРIMAS"#h_Balta"]: Юaidлjas yra "#h_Raudona"neprisijungжs" );
if( Direktorius > 4 ) return SendClientMessage( playerid, -1, ""#h_Balta"["#h_Melyna"PRANEРIMAS"#h_Balta"]: Darbo ID suvestas blogai" );
SetPVarInt( ID, "Direktorius", Direktorius );
new
dDirektorius[ 23 ]
;
if( Direktorius == 1 ) dDirektorius = "Policijos Departamento";
else if( Direktorius == 2 ) dDirektorius = "Medicinos Departamento";
else if( Direktorius == 3 ) dDirektorius = "Taksi firmos";
else if( Direktorius == 1 ) dDirektorius = "Dizaineriш";
format( Stringas, 174, ""#h_Balta"["#h_Melyna"PRANEРIMAS"#h_Balta"]: Pagr. Administratorius %s Jus paskyrл kaip "#h_Raudona"%s "#h_Balta"direktoriumi.", ZaidejoVardas( playerid ), dDirektorius );
SendClientMessage( ID, -1, Stringas );
format( Stringas, 157, ""#h_Balta"["#h_Melyna"PRANEРIMAS"#h_Balta"]: Юaidлjа %s paskyrлte kaip "#h_Raudona"%s "#h_Balta"direktoriumi.", ZaidejoVardas( ID ), dDirektorius );
SendClientMessage( playerid, -1, Stringas );
return true;
}
else if( ! strcmp( Tikrinimas[ 1 ], "nuiimti", true ) )
{
new
ID,
Priezastis[ 76 ]
;
if( sscanf( params[ strlen( Tikrinimas[ 0 ] ) ], "us[76]", ID, Priezastis ) ) return SendClientMessage( playerid, -1, ""#h_Balta"["#h_Melyna"PRANEРIMAS"#h_Balta"]: /direktorius nuiimti <Vardas> <Prieюastis>" );
if( ID == INVALID_PLAYER_ID || ID == playerid ) return SendClientMessage( playerid, -1, ""#h_Balta"["#h_Melyna"PRANEРIMAS"#h_Balta"]: Юaidлjas yra "#h_Raudona"neprisijungжs" );
if( GetPVarInt( ID, "Direktorius" ) < 1 ) return SendClientMessage( playerid, -1, ""#h_Balta"["#h_Melyna"PRANEРIMAS"#h_Balta"]: Юaidлjas nлra Direktorius" );
if( strlen( Priezastis ) > 75 ) return SendClientMessage( playerid, -1, ""#h_Balta"["#h_Melyna"PRANEРIMAS"#h_Balta"]: Prieюastis yra "#h_Raudona"per ilga. "#h_Balta"[Iki 75 simboliш]" );
SetPVarInt( ID, "Direktorius", 0 );
format( Stringas, 253, ""#h_Balta"["#h_Melyna"PRANEРIMAS"#h_Balta"]: Pagr. Administratorius %s Jums "#h_Raudona"nuemл "#h_Balta"Direktoriaus statusа. | Prieюastis: "#h_Raudona"%s", ZaidejoVardas( playerid ), Priezastis );
SendClientMessage( ID, -1, Stringas );
format( Stringas, 200, ""#h_Balta"["#h_Melyna"PRANEРIMAS"#h_Balta"]: Nuemлte юaidлjui %s Administratoriaus statusа. Prieюastis: "#h_Raudona"%s", ZaidejoVardas( ID ), Priezastis );
SendClientMessage( playerid, -1, Stringas );
}
else SendClientMessage( playerid, -1, ""#h_Balta"["#h_Melyna"PRANEРIMAS"#h_Balta"]: /administratorius paskirti/nuiimti" );
return true;
}