[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
dlopen failure
- From: Dimitri Priimak <priimak networking Stanford EDU>
- To: pam-list redhat com
- Subject: dlopen failure
- Date: Sun, 10 Sep 2000 13:49:43 -0700 (PDT)
Hi.
I am trying to authenicate my user using pam (,pam-0.72-20) on RedHat
6.2 and I did many things but nothing works and get error message which
correspond to dlopen failure. So, below I wrote simple program which is
trying to authenicate user 'dummy' with pussword 'dummypass'.
Can somebody tell me what I am doing wrong?
/****
* file pam_test.c
****/
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <security/pam_appl.h>
#define PAM_CHECK_ERROR if( pam_result != PAM_SUCCESS ){ \
pam_end(pamh, 0); \
exit(-1); \
}
static int pam_convf(int num_msg, const struct pam_message **msg,
struct pam_response **resp, void *appdata_ptr);
static struct pam_conv pam_conversation =
{
&pam_convf,
NULL
};
int pam_result;
pam_handle_t *pamh;
int main(int argc, char *argv){
/* init pam, using xlock service */
pam_result = pam_start("xlock", "priimak", &pam_conversation, &pamh);
printf("pam_start : %s\n", pam_strerror(pamh, pam_result));
PAM_CHECK_ERROR;
pam_result = pam_set_item(pamh, PAM_USER, "dummy");
printf("pam_set_item : %s\n", pam_strerror(pamh, pam_result));
PAM_CHECK_ERROR;
/* try to authenticate */
pam_result = pam_authenticate(pamh, 0);
printf("pam_authenticate : %s\n", pam_strerror(pamh, pam_result));
PAM_CHECK_ERROR;
pam_end(pamh, 0);
exit(0);
}
static int pam_convf(int num_msg, const struct pam_message **msg,
struct pam_response **resp, void
*appdata_ptr){
struct pam_response *reply = NULL;
int replies;
reply = (struct pam_response *) malloc(sizeof (struct pam_response) *
num_msg);
for( replies = 0; replies < num_msg; replies++ ){
switch (msg[replies]->msg_style) {
case PAM_PROMPT_ECHO_ON :
printf("PAM_PROMPT_ECHO_ON\n");
reply[replies].resp_retcode = PAM_SUCCESS;
reply[replies].resp = "dummy";
break;
case PAM_PROMPT_ECHO_OFF :
printf("PAM_PROMPT_ECHO_OFF\n");
reply[replies].resp_retcode = PAM_SUCCESS;
reply[replies].resp = "dummypass";
break;
case PAM_TEXT_INFO :
printf("PAM_TEXT_INFO\n");
reply[replies].resp_retcode = PAM_SUCCESS;
reply[replies].resp = NULL;
break;
case PAM_ERROR_MSG :
printf("PAM_ERROR_MSG\n");
reply[replies].resp_retcode = PAM_SUCCESS;
reply[replies].resp = NULL;
break;
default:
(void) free((void *) reply);
return PAM_CONV_ERR;
}
}
}
*********
I compile it like this
% gcc -lc -lpam -ldl pam_test.c -o pam_tes
Fianally when I run it I get following output:
% ./pam_test
pam_start : Success
PAM_PROMPT_ECHO_OFF
pam_authenticate : dlopen() failure
%
When I look into /var/log/message I see
% cat /var/log/messages | grep -i pam
...
Sep 9 23:07:48 kez PAM_pwdb[5843]: auth could not identify password for
[dummy]
Note that I am using 'xlock' service and here it is
% cat /etc/pam.d/xlock
#%PAM-1.0
auth required /lib/security/pam_pwdb.so shadow nullok
%
I do have this file /lib/security/pam_pwdb.so and I checkd with strace
it actally opens it
as well as other libs. I also run xlock with strace and so that xlock
using service 'xlock'
Any ideas what is wrong?
Thanks in advance.
Dmitri Priimak.
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[]