Portal SAMP
[Ajuda] Warning sscanf. - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Warning sscanf. (/showthread.php?tid=1994)

Páginas: 1 2


Warning sscanf. - fear - 30/12/2021

boa noite. estou com essa warning mas eu aumentei todas as strings e mesmo assim está dando isso.

Estou achando que o problema está no comando de chat global

WANING:
Código PHP:
sscanf warningString buffer overflow

Código PHP:
CMD:cg(playeridparams[])
{
    if(
ChecarPermissoes(playerid)) return 1;
    new 
textomsg[1000], stringcc[1000], nomecc[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomeccMAX_PLAYER_NAME);
    if(
sscanf(params"s[1000]"textomsg)) return Msg(playeridVermelho"<!> {FFFFFF}Use: {FF0000}/Cg [Menssagem]");
     if(
playerChatMuted[playerid])
    {
        if(
gettime() < playerChatTalkedTime[playerid])
            return 
SendClientMessage(playeridCOLOR_YELLOW"<!> {FFFFFF}Voce foi mutado durante 30 segundos por flood no chat GLOBAL.");
        else
            
playerChatMuted[playerid] = falseplayerChatTalkedTime[playerid] = 0;
    }
    if(
gettime() < playerChatTalkedTime[playerid])
    {
        
playerChatTimesSpoken[playerid]++;

        if(
playerChatTimesSpoken[playerid] > 1)
        {
            
playerChatMuted[playerid] = true;
            
playerChatTimesSpoken[playerid] = 0;
            
playerChatTalkedTime[playerid] = gettime() + 30;

            return 
SendClientMessage(playeridCOLOR_YELLOW"<!> {FFFFFF}Voce foi mutado durante 30 segundos por flood no chat GLOBAL.");
        }
    }
    else
    if(
GetPlayerAdminLevel(playerid) <= && !IsVip(playerid))
     {
        
playerChatTimesSpoken[playerid] = 0;
        
playerChatTalkedTime[playerid] = gettime() + 5;
        
format(stringccsizeof(stringcc), "** /Cg **  {FFFFFF}%s[ID:%d] {FFFFFF}Diz: {0080C0}%s"nomeccplayeridtextomsg); //quando é player comum
        
SendClientMessageToAll(0x0080C0AAstringcc);
    }
    else
    if(
GetPlayerAdminLevel(playerid) <= && IsVip(playerid)) // quando não é admin e é vip
     
{
        
format(stringccsizeof(stringcc), "{FFFFFF}[{%s}VIP{FFFFFF}] {FFFFFF}%s[ID:%d] {FFFFFF}Diz: {0080C0}%s"ContaPlayer[playerid][Cor_Tag], nomeccplayeridtextomsg);
        
SendClientMessageToAll(0x0080C0AAstringcc);
    }
    else
     if(
ContaPlayer[playerid][VipLevel] == 1  && GetPlayerAdminLevel(playerid) > 0// quando é vip comum e admin
    
{
        
format(stringccsizeof(stringcc), "{FFFFFF}[{%s}VIP{FFFFFF}] [%s{FFFFFF}] %s [ID:%d]: {FFFFFF}Diz: {0080C0}%s"ContaPlayer[playerid][Cor_Tag],  admins(playerid1), nomeccplayeridtextomsg);
        
SendClientMessageToAll(0x0080C0AAstringcc);
    }
    else
    if(
ContaPlayer[playerid][VipLevel] == 2  && GetPlayerAdminLevel(playerid) > 0// quando é vip sócio e admin
    
{
        
format(stringccsizeof(stringcc), "{FFFFFF}[{%s}SOCIO{FFFFFF}] [%s{FFFFFF}] %s [ID:%d]: {FFFFFF}Diz: {0080C0}%s"ContaPlayer[playerid][Cor_Tag],  admins(playerid1), nomeccplayeridtextomsg);
        
SendClientMessageToAll(0x0080C0AAstringcc);
    }
    else
    if(
GetPlayerAdminLevel(playerid) > 0// quando é somente admin
    
{
         
format(stringccsizeof(stringcc), "{FFFFFF}[{27AE60}%s{FFFFFF}] {FFFFFF}%s[ID:%d] {FFFFFF}Diz: {0080C0}%s",  admins(playerid1), nomeccplayeridtextomsg);
        
SendClientMessageToAll(0x0080C0AAstringcc);
    }
    return 
1;


Estou formatando varias vezes a mesma string.. pode ser isso?? e como resolver?
obs: teria algum problema ficar com esse warning?


RE: Warning sscanf. - xbruno1000x - 30/12/2021

Overflow é quando há um estouro no número de bits. Provavelmente há mais texto na string do que seu tamanho definido. Aumente o tamanho da string e veja se resolve.


RE: Warning sscanf. - fear - 30/12/2021

(30/12/2021 01:53)xbruno1000x Escreveu: Overflow é quando há um estouro no número de bits. Provavelmente há mais texto na string do que seu tamanho definido. Aumente o tamanho da string e veja se resolve.

eu aumento pra 2000 o /cg e ele não funciona mais diz que não existe..


RE: Warning sscanf. - xbruno1000x - 30/12/2021

Procurei acerca do limite do SemdClientMessage no SA-MP e encontrei 144.
https://open.mp/docs/scripting/functions/SendClientMessage

Tente alterar os valores para 144 e veja se funciona. O overflow pode ser no limit do sa-mp. Vale ressaltar que o overflow ocorre na variável textomsg.


RE: Warning sscanf. - fear - 30/12/2021

(30/12/2021 02:13)xbruno1000x Escreveu: Procurei acerca do limite do SemdClientMessage no SA-MP e encontrei 144.
https://open.mp/docs/scripting/functions/SendClientMessage

Tente alterar os valores para 144 e veja se funciona. O overflow pode ser no limit do sa-mp. Vale ressaltar que o overflow ocorre na variável textomsg.

Não adiantou! ainda ta dando nos logs..

Código PHP:
sscanf warningString buffer overflow



RE: Warning sscanf. - faraday - 30/12/2021

Código PHP:
new textomsg[128], stringcc[144], nomecc[MAX_PLAYER_NAME];
    GetPlayerName(playerid, nomecc, MAX_PLAYER_NAME);
    if(sscanf(params, "s[128]", textomsg)) return Msg(playerid, Vermelho, "<!> {FFFFFF}Use: {FF0000}/Cg [Menssagem]"); 



RE: Warning sscanf. - fear - 30/12/2021

(30/12/2021 17:05)faraday Escreveu:
Código PHP:
new textomsg[128], stringcc[144], nomecc[MAX_PLAYER_NAME];
    GetPlayerName(playerid, nomecc, MAX_PLAYER_NAME);
    if(sscanf(params, "s[128]", textomsg)) return Msg(playerid, Vermelho, "<!> {FFFFFF}Use: {FF0000}/Cg [Menssagem]"); 

Ainda o mesmo warning acima... não sei oque fazer mais não... demoro mais pra aparecer agora mas ainda acontece..


RE: Warning sscanf. - faraday - 31/12/2021

SendClientMessageToAll overload,
"{FFFFFF}[{%s}SOCIO{FFFFFF}] [%s{FFFFFF}] %s [ID:%d]: {FFFFFF}Diz: {0080C0}%s" = 74 symbol - 10 symbol (%*) = 65 + PLAYER_NAME ~24 symb. + adm name ~24 symb, + ID, Number acc ~ 10 symb + Text = 123 symb +
espaço para texto = 21 symb.

Reduzir?


RE: Warning sscanf. - fear - 31/12/2021

(31/12/2021 09:41)faraday Escreveu: SendClientMessageToAll overload,
"{FFFFFF}[{%s}SOCIO{FFFFFF}] [%s{FFFFFF}] %s [ID:%d]: {FFFFFF}Diz: {0080C0}%s" = 74 symbol - 10 symbol (%*) = 65 + PLAYER_NAME ~24 symb. + adm name ~24 symb, + ID, Number acc ~ 10 symb + Text = 123 symb +
espaço para texto = 21 symb.

Reduzir?

Não entendi absolutamente nada.. só sei que ta overflow ainda.


RE: Warning sscanf. - SrBlue - 02/01/2022

overflow ocorre quando exerce quantidade maxima do vetor

exemplo:

a[1] = "ABC" // overflow
a[1] = "AB" // not overflow

altere todos valores da suas strings para 512 ( eu sei que é um valor exagerado )
exemplo
s[128] = s[512]
s[64] = s[512]

obs: se a mensagem não está sendo enviada, tenta passar um format sem nenhum argumento...