IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Récupérer des champs d'un fichier


Sujet :

GTK+ avec C & C++

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Récupérer des champs d'un fichier
    Bonjour
    Je veux concevoir un petit prog qui me permetterai de lancer ma connexion, le nom d'utilisateur et le mot de passe se trouvent dans le fichier /etc/ppp/chap-secrets.
    Le fichier a la syntaxe:
    "nom_d'utilisateur" * "mot_de_passe" *

    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
     
    pLogin=gtk_entry_new();	
    pPass=gtk_entry_new();
    gtk_entry_set_visibility(GTK_ENTRY(pPass),FALSE);
    gtk_entry_set_max_length(GTK_ENTRY(pLogin),25);
    gtk_entry_set_max_length(GTK_ENTRY(pPass),25);
     
    char tempo1[150];
    char tmplogin[25], tmplogin1[25];
    char tmppass[25], tmppass1[25];
    FILE *fd;
    system("gawk -F \\\" 'NR==1 {print $2}' /etc/ppp/peers/ueagle-atm>/tmp/login.tmp"); //je récupère le login
    fd = fopen ("/tmp/login.tmp","r");
    if (fd != NULL)
    {
    	fgets(tmplogin,25,fd);
    	fclose(fd);
    	strncpy(tmplogin1,tmplogin,strlen(tmplogin)-1);
     
    	sprintf(tempo1,"%s","cat /etc/ppp/chap-secrets|grep "); //le fichier peut contenir plusieurs login, donc je localise le login que je cherche.
    	strcat(tempo1,tmplogin1);
    	strcat(tempo1,"|gawk -F \\* '{print $2}'|gawk -F \\\" ' {print $2}'>/tmp/pass.tmp"); //je récupère le mot de passe correspondant
    	system(tempo1);
    	fd=fopen("/tmp/pass.tmp","r");
    	if (fd != NULL)
    	{
    		fgets(tmppass,25,fd);
    		fclose(fd);
    		strncpy(tmppass1,tmppass,strlen(tmppass)-1);
    		gtk_entry_set_text(GTK_ENTRY(pLogin),tmplogin1);
    		gtk_entry_set_text(GTK_ENTRY(pPass),tmppass1);
    	}
    }
    Le problème est que je n'arrive pas à récupérer le mot de passe, pourtant le fichier temporaire /tmp/pass.tmp contient bel et bien le mot de passe, parfois j'ai même droit à un seg fault.

    PS: Le plus bizarre c'est que le prog marchait parfaitement sous FC5 (malheureusement je me souviens plus de quelle version de gtk j'utilisais), mais depuis que je suis passé à FC7 ça ne marche plus idem sous gentoo

    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    Tu utilises un bon nombre de fonction bien dangereuses (sprintf, strcat, ...) avec des buffers de tailles fixes, il doit probablement y avoir un moment où tu écris en dehors d'une des chaines. Je te recommande d'utiliser les fonctions de la glib (g_strconcat, g_strdup_printf ou l'api des GString) avec des chaînes allouées dynamiquement à la place, je ne serais pas surpris que ta segfault disparaisse. Si tu veux garder le code tel qu'il est actuellement, valgrind devrait te donner plus de détails sur ce qui ne va pas.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/06/2012, 18h19
  2. [PDF] récupérer des champs d'un fichier PDF
    Par [Hugo] dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/11/2010, 23h33
  3. récupérer le type des champs dans un fichier access
    Par patrickbaras dans le forum WinDev
    Réponses: 2
    Dernier message: 06/09/2010, 10h29
  4. [MySQL] récupérer des champs à partir d'un fichier texte
    Par sanouta dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/03/2010, 14h47
  5. [SQL] Comment récupérer des champs a partir d'un fichier de sauvegarde?
    Par baguira dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/03/2007, 18h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo