sscanf warning.
#1

Hi,

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;
}
Reply


Messages In This Thread
sscanf warning. - by Gh0sT_ - 10.04.2011, 16:15
Re: sscanf warning. - by Babul - 10.04.2011, 18:08
Re: sscanf warning. - by Gh0sT_ - 10.04.2011, 18:53
Re: sscanf warning. - by Gh0sT_ - 11.04.2011, 12:30
Re: sscanf warning. - by Calgon - 11.04.2011, 12:44
Re: sscanf warning. - by Gh0sT_ - 11.04.2011, 12:53

Forum Jump:


Users browsing this thread: 1 Guest(s)