Modification de la fonction de conversation de PAM

Modification de la fonction de conversation de PAM - C - Programmation

Marsh Posté le 19-05-2006 à 20:48:59    

Bonsoir,
 
Voici le code qui me pose problème.
 

Code :
  1. static struct pam_conv *original_conv;
  2. static int my_conversation(int num_msg, const struct pam_message **msg,
  3.           struct pam_response **resp, void *appdata_ptr) {
  4.  
  5.   if (received)
  6.     return PAM_SUCCESS;
  7.   else {
  8.     return (*original_conv->conv)(num_msg, msg, resp, appdata_ptr);
  9.   }
  10. }
  11. int modify_conversation(pam_handle_t *pamh) {
  12.    int retval;
  13.    original_conv=(struct pam_conv *) malloc(sizeof(struct pam_conv));
  14.    pam_get_item(pamh, PAM_CONV, &original_conv);
  15.   struct pam_conv *my_conv=(struct pam_conv *) malloc(sizeof(struct pam_conv));
  16.  
  17.   my_conv->conv = &my_conversation;
  18.   my_conv->appdata_ptr = original_conv->appdata_ptr;
  19.  
  20.   retval =  pam_set_item(pamh, PAM_CONV, my_conv);
  21.   free(my_conv);
  22.   return retval;
  23. }


 
Le but est de récupérer la fonction de conversation entre une application quelconque et PAM. Puis de la modifier.  
 
Mais ce code fait crasher l'application et il est difficile de le debugguer vu le status de PAM (ce n'est ni un processus ni vraiment attaché à l'application).
 
Avez-vous des idées ?


Message édité par Photonium le 19-05-2006 à 20:50:00

---------------
A savoir : la dimension de Hausdorff du chou-fleur a été calculée et vaut 2.33
Reply

Marsh Posté le 19-05-2006 à 20:48:59   

Reply

Marsh Posté le 19-05-2006 à 23:02:51    

Je pense avoir trouvé : Modifier original_conv reviens à modifier directement dans le PAM handlers pamh.
Donc ca fout le bordel à cause des pointeurs. Voilà...


---------------
A savoir : la dimension de Hausdorff du chou-fleur a été calculée et vaut 2.33
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed