Je ne comprend pas

lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013 - 17 mai 2007 à 21:28
deadbird Messages postés 49 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 mars 2010 - 18 mai 2007 à 01:27
Pourquoi a la fin du for, run_config ne vaut pas 1 mais 951742 ??

void load_lang()
{
      
       auto int i;
       auto char temp_buffer[MAX_PATH];
       auto int length=0;
       auto char temp_str[6];
       run_config=1;
       memset(temp_buffer,0,MAX_PATH);
       pause_timer=1; 
       for(i=1;i<LANG_SZ+1;i++)
       {                    
              sprintf(temp_str,"%ld",i);
              length=GetPrivateProfileString("hydrid_tool_language",temp_str,"",temp_buffer,MAX_PATH,lngfile);
              lang[i]=NULL;
              lang[i]=malloc(sizeof(char)*(length+1));
              if(!lang[i])
              {
                         error(9,hwnd_loading);
              }
              strcpy(lang[i],temp_buffer);
       }
       pause_timer=0;
}

l3KTr0 Was HeRe

2 réponses

cs_vicenzo Messages postés 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 1
17 mai 2007 à 23:00
Sans avoir les déclarations de LANG_SZ, lang[] et run_config, je ne vois qu'un buffer overwrite...

PS : c'est voulu le loop qui commence à 1 ?
0
deadbird Messages postés 49 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 mars 2010
18 mai 2007 à 01:27
A mon avis oui, tu dois avoir un tampon qui déborde sur ton integer. Si tu utilises VS tu px jeter un coup d'oeil à la mémoire qd tu débug.
0
Rejoignez-nous