[c] get_next_line
|
01-04-2016, 10h50
Message : #1
|
|
airday
Newbie Messages : 24 Sujets : 4 Points: 0 Inscription : Feb 2013 |
[c] get_next_line
Salut tout le monde, ça fait un long moment ahah.
J'ai intégrer y a pas longtemps l’école 42 et on travail sur plusieurs projet intéressant. Enfin bref ... Je suis présent aujourd'hui car j'ai un besoin d'approfondir mes connaissances. Il y a ce projet en titre sur lequel je bloque, c'est une fonction qui doit lire une ligne dans un file descriptor. (grosso modo) Sur chacun de nos projet, on est sense utilise notre bibliotheque c (une sorte de libc). Code : int get_next_line(int fd, char **line) J'ai pas mal d'erreurs, je ne lis pas correctement la ligne ou le fichier. Sans me donner la solution, pourriez vous me donnez piste a suivre, et quel serai la meilleur facon pour la prochaine fois d'etre toujours dans une bonne visualisation.[/code] Cordialement. |
|
01-04-2016, 10h57
Message : #2
|
|
supersnail
Éleveur d'ornithorynques Messages : 1,614 Sujets : 72 Points: 466 Inscription : Jan 2012 |
RE: [c] get_next_line
Bonjour,
Je pense que ce serait plus cool de décrire précisément le problème que nous laisser dans le flou artistique avec un vague "j'ai pas mal d'erreurs" dont le taux d'information est proche du 0 absolu. Sinon je vois rien de choquant, le bug se cache peut-être dans ta libc du coup.
Mon blog
Code : push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp "VIM est merveilleux" © supersnail |
|
01-04-2016, 11h02
Message : #3
|
|
ark
Psyckomodo! Messages : 1,033 Sujets : 48 Points: 317 Inscription : Sep 2011 |
RE: [c] get_next_line
Salut,
je pense que c'est a toi de chercher par toi même, quand j'ai fais ce projet il y a 5 ans, je suis pas venu en parler ici, et je me suis creusé la tête pour le finir. Bref, quoiqu'il en soit, si tu cherches des pistes, je te propose de commencer par trouver des questions précises à poser, parce que là ça donne vraiment l'impression du mec qui veut pas chercher. |
|
01-04-2016, 11h06
(Modification du message : 01-04-2016, 11h08 par airday.)
Message : #4
|
|
airday
Newbie Messages : 24 Sujets : 4 Points: 0 Inscription : Feb 2013 |
RE: [c] get_next_line
Oui tu as raison, j'ai tape trop rapidement. (desole)
Premierement, je n'arrive pas a decoupe par exemple "aaa\nbbb\nccc\0". Lorsque je lance get_next_line(fd, &line); le resultat de printf("%s", line), devrais etre "aaa" et ainsi de suite bbb, ccc, apres chaque appel. Cependant, je n'ai pas le bon resultat. Cette erreur c'est la premiere fois : malloc: *** mmap(size=18446603661912854528) failed (error code=12). Buffer Overflow surment. Il me manque quelque chose en plus, et je ne sais pas trop quoi c'est pour ca que c'est flou. @ark : j'ai fait des recherches, je continue d'en faire, je ne suis pas ici pour la reponse, mais pour comprendre, et pouvoir gerer mes erreurs plus faciment la prochaine fois, etre capable de trouver une solution rapidement. |
|
01-04-2016, 11h08
Message : #5
|
|
b0fh
Membre actif Messages : 210 Sujets : 17 Points: 309 Inscription : Jul 2012 |
RE: [c] get_next_line
Il ne faut jamais utiliser return dans une fonction qui utilise une variable locale statique, celà cause des problèmes avec le déroulement du fil qui sert à pêcher la stack.
Remplace les return(x) par des exit(x) et le programme aura beaucoup moins de bugs. |
|
01-04-2016, 11h13
Message : #6
|
|
supersnail
Éleveur d'ornithorynques Messages : 1,614 Sujets : 72 Points: 466 Inscription : Jan 2012 |
RE: [c] get_next_line
Ah nan je sais: c'est une backdoor secrète de 42 qui détecte l'utilisation de malloc et qui fait planter le programme de façon créative. Là t'as de la chance car pour n'importe quelle autre fonction non autorisé, un dinosaure venu de l'espace viendra dévorer ton programme et toutes ses variables locales statiques.
Le seul remède pour ça est d'installer Windows 10, empêchant la backdoor de 42 de fonctionner.
Mon blog
Code : push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp "VIM est merveilleux" © supersnail |
|
01-04-2016, 18h19
(Modification du message : 01-04-2016, 18h26 par Commodor.)
Message : #7
|
|
Commodor
Ho ! Dodgson ! Messages : 64 Sujets : 9 Points: 36 Inscription : Nov 2011 |
RE: [c] get_next_line
(01-04-2016, 11h08)b0fh a écrit : Il ne faut jamais utiliser return dans une fonction qui utilise une variable locale statique, celà cause des problèmes avec le déroulement du fil qui sert à pêcher la stack. Tu parles dans son cas précis ou en général ? car je suis pas d'accord, je vois pas où est le problème à utiliser une variable static et locale à une fonction qui contient un return. Sinon déclarer une variable static dans une fonction ne servirait à rien. Tu parles peut être dans le cas d'une erreur (return -1) ? Ba la aussi ça dépend, s'il gère ce cas dans la fonction de retour aucun souci (exit() c'est le mal ). Bon sinon @airday, commence déjà par initialiser ton pointeur, il faut toujours initialiser un pointeur, toujours EDIT: me serais-je fais avoir ? (1er avril)
Hahaha you didn't say the magic word !
|
|
Utilisateur(s) parcourant ce sujet : 5 visiteur(s)