]> andersk Git - openssh.git/blobdiff - monitor.c
[configure.ac] Make sure -lcrypto is before -lsocket for sco3. ok mouring@
[openssh.git] / monitor.c
index 97f1ee9f4c16c920e8727a5232ce951b269a0420..009dcf18256b95965857f2fc5841dccdc1ad30b1 100644 (file)
--- a/monitor.c
+++ b/monitor.c
@@ -25,7 +25,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: monitor.c,v 1.52 2003/11/17 11:06:07 markus Exp $");
+RCSID("$OpenBSD: monitor.c,v 1.55 2004/02/05 05:37:17 dtucker Exp $");
 
 #include <openssl/dh.h>
 
@@ -309,11 +309,11 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor)
                                authenticated = 0;
 #ifdef USE_PAM
                        /* PAM needs to perform account checks after auth */
-                       if (options.use_pam) {
+                       if (options.use_pam && authenticated) {
                                Buffer m;
 
                                buffer_init(&m);
-                               mm_request_receive_expect(pmonitor->m_sendfd, 
+                               mm_request_receive_expect(pmonitor->m_sendfd,
                                    MONITOR_REQ_PAM_ACCOUNT, &m);
                                authenticated = mm_answer_pam_account(pmonitor->m_sendfd, &m);
                                buffer_free(&m);
@@ -567,6 +567,7 @@ mm_answer_pwnamallow(int socket, Buffer *m)
 
        if (pwent == NULL) {
                buffer_put_char(m, 0);
+               authctxt->pw = fakepw();
                goto out;
        }
 
@@ -782,7 +783,7 @@ int
 mm_answer_pam_start(int socket, Buffer *m)
 {
        char *user;
-       
+
        if (!options.use_pam)
                fatal("UsePAM not set, but ended up in %s anyway", __func__);
 
@@ -801,7 +802,7 @@ int
 mm_answer_pam_account(int socket, Buffer *m)
 {
        u_int ret;
-       
+
        if (!options.use_pam)
                fatal("UsePAM not set, but ended up in %s anyway", __func__);
 
@@ -1707,6 +1708,7 @@ monitor_init(void)
 
        mon = xmalloc(sizeof(*mon));
 
+       mon->m_pid = 0;
        monitor_socketpair(pair);
 
        mon->m_recvfd = pair[0];
@@ -1797,25 +1799,25 @@ mm_answer_gss_checkmic(int socket, Buffer *m)
        gss_buffer_desc gssbuf, mic;
        OM_uint32 ret;
        u_int len;
-       
+
        gssbuf.value = buffer_get_string(m, &len);
        gssbuf.length = len;
        mic.value = buffer_get_string(m, &len);
        mic.length = len;
-       
+
        ret = ssh_gssapi_checkmic(gsscontext, &gssbuf, &mic);
-       
+
        xfree(gssbuf.value);
        xfree(mic.value);
-       
+
        buffer_clear(m);
        buffer_put_int(m, ret);
-       
+
        mm_request_send(socket, MONITOR_ANS_GSSCHECKMIC, m);
-       
+
        if (!GSS_ERROR(ret))
                monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1);
-       
+
        return (0);
 }
 
This page took 0.033943 seconds and 4 git commands to generate.