• STATISTIQUES
  • Il y a eu un total de 2 membres et 24725 visiteurs sur le site dans les dernières 24h pour un total de 24 727 personnes!


    Membres: 2 604
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Sabre Films
    Site de challenge présenté sous la forme d'une quête. Vous êtes un détective et devrez résoudre d...
    Challenges
    [EN] Reddit
    Subreddit dédié à la sécurité informatique.
    Hacking
    [FR] WeChall
    Audio: 3, Coding: 11, Cracking: 9, Crypto: 18, Encoding: 11, Exploit: 44, Forensics: 1, Fun: 6, HTTP: 6, Image: 8, Java:...
    Challenges
    [EN] hax.tor
    50 level de challenges mélangés
    Challenges
    [FR] Kalkulators
    Ce projet a plusieurs buts, le premier étant l’étude de toutes formes cryptographiques, le cot&ea...
    Cryptographie
    [EN] Net Force
    Javascript: 9, Java Applets: 6, Cryptography: 16, Exploits: 7, Cracking: 14, Programming: 13, Internet: 15, Steganograph...
    Challenges
    [EN] Packet Storm
    Packet Storm est un site qui combine nouvelles de la sécurité informatique, téléchargemen...
    Vulnérabilités

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[c] get_next_line
01-04-2016, 10h50
Message : #1
airday Hors ligne
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. Heart

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)
{
    static char        *buff;
    char            tmp[BUFF_SIZE + 1];
    int                rd;

    if (fd == -1 || BUFF_SIZE <= 0)
        return (-1);
    if (buff == NULL)
        buff = ft_strnew(BUFF_SIZE + 1);
    while (buff != NULL && ft_strchr(buff, '\n') == NULL
        && ((rd = read(fd, tmp, BUFF_SIZE)) > 0))
    {
        tmp[rd] = '\0';
        buff = ft_strjoin(buff, tmp);
    }
    return (1);
}

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.
+1 (0) -1 (0) Répondre
01-04-2016, 10h57
Message : #2
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,608
Sujets : 71
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
+1 (0) -1 (0) Répondre
01-04-2016, 11h02
Message : #3
ark Hors ligne
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.
+1 (0) -1 (0) Répondre
01-04-2016, 11h06 (Modification du message : 01-04-2016, 11h08 par airday.)
Message : #4
airday Hors ligne
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.
+1 (0) -1 (0) Répondre
01-04-2016, 11h08
Message : #5
b0fh Hors ligne
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.
+1 (2) -1 (0) Répondre
01-04-2016, 11h13
Message : #6
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,608
Sujets : 71
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
+1 (0) -1 (0) Répondre
01-04-2016, 18h19 (Modification du message : 01-04-2016, 18h26 par Commodor.)
Message : #7
Commodor Hors ligne
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.

Remplace les return(x) par des exit(x) et le programme aura beaucoup moins de bugs.

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 Tongue).

Bon sinon @airday, commence déjà par initialiser ton pointeur, il faut toujours initialiser un pointeur, toujours Sleepy


EDIT: me serais-je fais avoir Tongue ? (1er avril)
Hahaha you didn't say the magic word !
+1 (0) -1 (0) Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut