bug-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Compile error in current CVS, src/server.c:5500


From: Brian Murphy
Subject: Re: Compile error in current CVS, src/server.c:5500
Date: Mon, 21 Jul 2003 21:46:12 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030529

Derek Robert Price wrote:

There's nothing wrong with retval = pam_end(pamh, retval), assuming you've already checked the previous retval and printed the relevant error messages. There's no need for `err' here.

Yes there is - if pam_end returns PAM_SUCCESS but the authentication has failed then
the user will get authenticated - i.e. every user will be authenticated.


    {
-    printf("E Fatal error, aborting.\n
-        pam failed to release authenticator\n");
+    printf("E Fatal error, aborting.\n\
+error 0 pam failed to release authenticator\n\
+PAM error number %d: %s\n", err, pam_strerror(NULL, err));
    error_exit ();
    }

Derek

/Brian
ChangeLog:

* server.c: be more verbose when PAM routines fail,
        fix a string literal bug


Index: src/server.c
===================================================================
RCS file: /cvs/ccvs/src/server.c,v
retrieving revision 1.301
diff -u -r1.301 server.c
--- src/server.c        20 Jul 2003 16:38:55 -0000      1.301
+++ src/server.c        21 Jul 2003 19:43:39 -0000
@@ -5483,22 +5483,27 @@
     char *username, *password;
 {
     pam_handle_t *pamh = NULL;
-    int retval;
+    int retval, err;
     struct cvs_pam_userinfo ui = { username, password };
     struct pam_conv conv = { cvs_pam_conv, (void *)&ui };
 
     retval = pam_start(PAM_SERVICE_NAME, username, &conv, &pamh);
 
-    if (retval == PAM_SUCCESS)
+    if (retval == PAM_SUCCESS) {
        retval = pam_authenticate(pamh, 0);
 
-    if (retval == PAM_SUCCESS)
-       retval = pam_acct_mgmt(pamh, 0);
+       if (retval == PAM_SUCCESS)
+           retval = pam_acct_mgmt(pamh, 0);
+    }
 
-    if (pam_end(pamh,retval) != PAM_SUCCESS)
+    if (retval != PAM_SUCCESS)
+       printf("E PAM Error: %s\n", pam_strerror(pamh, retval));
+
+    if ((err = pam_end(pamh, retval)) != PAM_SUCCESS)
     {
-       printf("E Fatal error, aborting.\n
-               pam failed to release authenticator\n");
+       printf("E Fatal error, aborting.\n\
+error 0 pam failed to release authenticator\n\
+PAM error number %d: %s\n", err, pam_strerror(NULL, err));
        error_exit ();
     }
 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]