Listing 4. A Sample Implementation of converse()
  
static int converse(pam_handle_t * pamh, int ctrl, int nargs
          ,struct pam_message **message
          ,struct pam_response **response)
{
   int retval;
   struct pam_conv *conv;
   retval = pam_get_item(pamh, PAM_CONV, (const void **) &conv);
   if (retval == PAM_SUCCESS) {
      retval = conv->conv(nargs, (const struct pam_message **) message
                ,response, conv->appdata_ptr);
      printf("returned from application's conversation function");
      if (retval != PAM_SUCCESS && on(UNIX_DEBUG, ctrl)) {
         printf("conversation failure\n",);
      }
   printf("ready to return from module conversation");
   return retval;    /* propagate error status */
}
  
  
  
  
  
  
  
  
  
    Copyright © 1994 - 2014 Linux Journal.  All rights reserved.