Violation de lecture en C
Résolu/Fermé
benj2711
Messages postés
14
Date d'inscription
vendredi 13 mai 2011
Statut
Membre
Dernière intervention
24 mai 2011
-
22 mai 2011 à 17:36
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 24 mai 2011 à 10:19
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 24 mai 2011 à 10:19
A voir également:
- Violation de lecture en C
- Confirmation de lecture whatsapp - Guide
- Accusé de lecture gmail - Guide
- Télécharger livre de lecture ce2 gratuit pdf - Télécharger - Éducatifs
- Lecture epub - Guide
- Votre compte a été désactivé pour violation de nos conditions d’utilisation - Guide
4 réponses
Bonjour
Tu es sûr que ton message complet ne dépasse pas 70 caractères ?
Je suis étonné de voir que tu le commences par strcat(message,"\r\n"); alors que le message n'est pas initialisé : tu ne sais pas où vont s'écrire le "\r\n". Tu devrais mettre strcpy(message,"\r\n");
Je ne sais pas dans quel ordre le compilateur range les variables locales, mais si message est avant les autres, ce qui est très possible, et que tu débordes, tu viens écraser timeinfo, ce qui expliquerait très bien ton erreur.
Tu es sûr que ton message complet ne dépasse pas 70 caractères ?
Je suis étonné de voir que tu le commences par strcat(message,"\r\n"); alors que le message n'est pas initialisé : tu ne sais pas où vont s'écrire le "\r\n". Tu devrais mettre strcpy(message,"\r\n");
Je ne sais pas dans quel ordre le compilateur range les variables locales, mais si message est avant les autres, ce qui est très possible, et que tu débordes, tu viens écraser timeinfo, ce qui expliquerait très bien ton erreur.
benj2711
Messages postés
14
Date d'inscription
vendredi 13 mai 2011
Statut
Membre
Dernière intervention
24 mai 2011
22 mai 2011 à 23:41
22 mai 2011 à 23:41
up ! :/ c'est assez urgent
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
23 mai 2011 à 16:40
23 mai 2011 à 16:40
met le morceau de code qui va bien alors.
localtime fait un malloc ?
localtime fait un malloc ?
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
23 mai 2011 à 09:39
23 mai 2011 à 09:39
tu ne mets pas la partie du code source qui est pointé, mais une autre. Je ne vois pas comment t'aider.
benj2711
Messages postés
14
Date d'inscription
vendredi 13 mai 2011
Statut
Membre
Dernière intervention
24 mai 2011
24 mai 2011 à 02:13
24 mai 2011 à 02:13
bon voila je me suis renseigné un peu et j'ai trouvé une facon qui fonctionne bien, merci bcp :)
void log(char* adresse, char* motif){ char message[100]; time_t temps_act; time(&temps_act); strcpy(message,ctime(&temps_act)); strcat(message," "); strcat(message,motif); strcat(message," "); strcat(message, adresse); strcat(message,"\n"); int tMessage=-1, x=0; for(x=0; x<sizeof(message) && message[x]!='Ì'; x++); tMessage=x-1; DWORD dwByRead; HANDLE fLog = CreateFile("fichier.log",GENERIC_WRITE,0,(LPSECURITY_ATTRIBUTES) NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL); SetFilePointer(fLog,0,NULL,FILE_END); WriteFile(fLog,&message,tMessage,&dwByRead,NULL);//écriture fichier CloseHandle(fLog); }
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
24 mai 2011 à 10:19
24 mai 2011 à 10:19
oui, c'est bien comme ça. Pour être parfait, il faudrait tout de même vérifier la taille. C'est comme ça que se font les failles, un gars repère que tu ne teste pas la taille de ta variable, du coup il te fait un overflow etc.
23 mai 2011 à 14:48