Ondrej Svetlik wrote: > int myConv(int numMsg, const struct pam_message **msg, > struct pam_response **response, void *appdataPtr) [snip] > *resp = reply; I'm assuming that was supposed to be: *response = reply; to match the function header since resp isn't declared anywhere. I've also just realized the unusual way *appdataPtr is used to pass data in from the app. I would also assume that you could stick the code to obtain the username and password directly in the conversation function's code- but it's probably a good idea not to. > case PAM_PROMPT_ECHO_OFF: /* ? password */ > case PAM_PROMPT_ECHO_ON: /* ? username */ How reliable are these correlations? (echo-off for username, echo-on for password) Many thanks for the example; it's starting to make a little more sense now. -kgd -- Money is overrated.