Advertisement
Guest User

Untitled

a guest
Feb 15th, 2012
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. #include <security/pam_appl.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. static int pam_conv_handler(int num_msg, const struct pam_message ** msg,
  7. struct pam_response ** resp, void *appdata_ptr)
  8. {
  9. int i;
  10. struct pam_response *response;
  11.  
  12. /* parameter sanity checking */
  13. if (!resp || !msg)
  14. return PAM_CONV_ERR;
  15.  
  16. /* allocate memory to store response */
  17. response = malloc(num_msg * sizeof(struct pam_response));
  18. if (!response)
  19. return PAM_CONV_ERR;
  20.  
  21. /* copy values */
  22. for (i = 0; i < num_msg; i++) {
  23. /* initialize to safe values */
  24. response[i].resp_retcode = 0;
  25. response[i].resp = 0;
  26.  
  27. /* select response based on requested output style */
  28. switch (msg[i]->msg_style) {
  29. case PAM_PROMPT_ECHO_ON:
  30. /* on memory allocation failure, auth fails */
  31. response[i].resp = strdup("mylogin");
  32. break;
  33. case PAM_PROMPT_ECHO_OFF:
  34. response[i].resp = strdup("mypassword");
  35. break;
  36. default:
  37. if (response) {
  38. free(response);
  39. }
  40. return PAM_CONV_ERR;
  41. }
  42. }
  43. /* everything okay, set PAM response values */
  44. *resp = response;
  45. return PAM_SUCCESS;
  46. }
  47.  
  48.  
  49. int main(int argc, char **argv) {
  50. int rc;
  51. pam_handle_t *pamh = NULL;
  52. struct pam_conv conv_info;
  53.  
  54. conv_info.conv = pam_conv_handler;
  55. if ((rc = pam_start("phpmyadmin", "mylogin", &conv_info, &pamh)) != PAM_SUCCESS) {
  56. fprintf(stderr, "Error: %s", pam_strerror(pamh, rc));
  57. return 1;
  58. }
  59.  
  60. if ((rc = pam_authenticate(pamh, PAM_DISALLOW_NULL_AUTHTOK)) != PAM_SUCCESS) {
  61. fprintf(stderr, "Error: %s", pam_strerror(pamh, rc));
  62. return 1;
  63. }
  64.  
  65. if ((rc = pam_acct_mgmt(pamh, PAM_DISALLOW_NULL_AUTHTOK)) != PAM_SUCCESS) {
  66. fprintf(stderr, "Error: %s", pam_strerror(pamh, rc));
  67. pam_end(pamh, PAM_SUCCESS);
  68. return 1;
  69. }
  70.  
  71. pam_end(pamh, PAM_SUCCESS);
  72. return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement