Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2887 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Erreur de segmentation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur de segmentation

n°1122041
4bis
Posté le 16-06-2005 à 15:10:24  profilanswer
 

Bonjour a tous, je suis en train de programmer un petit script en C pour un annuaire ldap. J'aimerais modifier un champ, mais je ne comprend pas trop l'utilisation de la structure ldapmod, qui servira ensuite dans ldap_modify_s.
 
Voila mon code qui crée une erreur de segmentation (des le mod[0]->mod_op = LDAP_MOD_REPLACE;)
 

Code :
  1. LDAPMod **mod;
  2. mod[0]->mod_op = LDAP_MOD_REPLACE;
  3. mod[0]->mod_type = "uid";
  4. mod[1] = (LDAPMod *) 0;
  5. modify[0] = "256";
  6. modify[1] = (char *) 0;
  7. mod[1]->mod_values = modify;


 
 
Voici la structure ldapmod :  
 

Code :
  1. typedef struct ldapmod {
  2.               int mod_op;
  3.               char *mod_type;
  4.               union {
  5.                   char **modv_strvals;
  6.                   struct berval **modv_bvals;
  7.               } mod_vals;
  8.               struct ldapmod *mod_next;
  9.           } LDAPMod;


 
J'ai essayé de recopier sur un exemple : https://picolibre.enst-bretagne.fr/ [...] .c?rev=1.2, mais ca me met une erreur de segmentation des la premiere ligne : mod[0]->mod_op = LDAP_MOD_REPLACE;
 
Quelqu'un pourait m'expliquer ca ?


Message édité par #SubZero le 16-06-2005 à 15:49:03
mood
Publicité
Posté le 16-06-2005 à 15:10:24  profilanswer
 

n°1122156
Emmanuel D​elahaye
C is a sharp tool
Posté le 16-06-2005 à 15:56:41  profilanswer
 

4bis a écrit :

Bonjour a tous, je suis en train de programmer un petit script en C pour un annuaire ldap. J'aimerais modifier un champ, mais je ne comprend pas trop l'utilisation de la structure ldapmod, qui servira ensuite dans ldap_modify_s.
 
Voila mon code qui crée une erreur de segmentation (des le mod[0]->mod_op = LDAP_MOD_REPLACE;)
 

Code :
  1. LDAPMod **mod;
  2. mod[0]->mod_op = LDAP_MOD_REPLACE;




'mod' est un pointeur non initialisé. Déréférencer un pointeur non initialisé invoque un comportement indéfini.

Citation :


J'ai essayé de recopier sur un exemple : https://picolibre.enst-bretagne.fr/ [...] .c?rev=1.2


Visiblement, tu as loupé un point important


      LDAPMod **modifpwd;
<...>
      if((modifpwd = (LDAPMod **) malloc(2 * sizeof(LDAPMod *))) == (LDAPMod **) 0)
     return (3);


Message édité par Emmanuel Delahaye le 16-06-2005 à 16:00:58

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1122166
4bis
Posté le 16-06-2005 à 16:05:27  profilanswer
 

Merci beaucoup, je l'avais completement zappé, et vu que ca fait plusieurs années que j'ai aps fait de c, je pensais plus au malloc. :jap:
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Erreur de segmentation

 

Sujets relatifs
erreur de segmentationerreur de segmentation pourtant simple
problème d'erreur de segmentationErreur de segmentation
Erreur de segmentation - appel strsepErreur de segmentation :/
erreur de segmentationErreur de Segmentation
Erreur de segmentation suite au passage à SuSE 8.1question en c: (random et erreur de segmentation).. aidez moi :-)
Plus de sujets relatifs à : Erreur de segmentation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR