Bonjour,
Je suis confronté à une erreur qui me laisse perplexe.
J'ai le code suivant :
En exécutant ce programme, j'obtient un segmentation fault, qui a lieu dans le fread d'après gdb dès la première itération de la boucle (testé sur un fichier de 10180 octets). De quoi cela peut-il venir ? La fonction fsize est celle donnée dans la FAQ pour connaitre la taille d'un fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 int valider(char * f, cle p) { hash h; signature s; FILE * stream = fopen(f, "r"); if(!stream){ fprintf(stderr, "Erreur : impossible d'ouvrir %s en lecture.\n", f); return -1; } h = calculerHash(stream); ... } hash calculerHash(FILE * f) { hash h = malloc(sizeof(char)*17); long s = fsize(f); char * str = malloc(sizeof(char) * (s+1)); char * save = str; int lu = 1024, lire = 1024, tlu = 0; while(lu == lire){ lu = fread(str, sizeof(char), lire, f); tlu += lu; str += lu; } if(tlu != s){ fprintf(stderr, "Erreur lors de la lecture du programme.\n"); return NULL; } save[s] = '\0'; hasher(save, h); return h; }
Merci de votre aide
Partager