]> andersk Git - openssh.git/blobdiff - monitor.c
- markus@cvs.openbsd.org 2002/06/26 14:51:33
[openssh.git] / monitor.c
index c769f12e7abd33621f2ab8330af72304beaadaab..86562243d07f84e8d9854954ff9e707e9cbdd913 100644 (file)
--- a/monitor.c
+++ b/monitor.c
@@ -25,7 +25,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: monitor.c,v 1.15 2002/06/19 18:01:00 markus Exp $");
+RCSID("$OpenBSD: monitor.c,v 1.19 2002/06/26 14:49:36 deraadt Exp $");
 
 #include <openssl/dh.h>
 
@@ -188,9 +188,6 @@ struct mon_table mon_dispatch_proto15[] = {
     {MONITOR_REQ_KEYALLOWED, MON_ISAUTH, mm_answer_keyallowed},
     {MONITOR_REQ_RSACHALLENGE, MON_ONCE, mm_answer_rsa_challenge},
     {MONITOR_REQ_RSARESPONSE, MON_ONCE|MON_AUTHDECIDE, mm_answer_rsa_response},
-#ifdef USE_PAM
-    {MONITOR_REQ_PAM_START, MON_ONCE, mm_answer_pam_start},
-#endif
 #ifdef BSD_AUTH
     {MONITOR_REQ_BSDAUTHQUERY, MON_ISAUTH, mm_answer_bsdauthquery},
     {MONITOR_REQ_BSDAUTHRESPOND, MON_AUTH,mm_answer_bsdauthrespond},
@@ -327,8 +324,10 @@ monitor_child_postauth(struct monitor *pmonitor)
 void
 monitor_sync(struct monitor *pmonitor)
 {
-       /* The member allocation is not visible, so sync it */
-       mm_share_sync(&pmonitor->m_zlib, &pmonitor->m_zback);
+       if (options.compression) {
+               /* The member allocation is not visible, so sync it */
+               mm_share_sync(&pmonitor->m_zlib, &pmonitor->m_zback);
+       }
 }
 
 int
@@ -456,7 +455,7 @@ mm_answer_sign(int socket, Buffer *m)
        p = buffer_get_string(m, &datlen);
 
        if (datlen != 20)
-               fatal("%s: data length incorrect: %d", __func__, datlen);
+               fatal("%s: data length incorrect: %u", __func__, datlen);
 
        /* save session id, it will be passed on the first call */
        if (session_id2_len == 0) {
@@ -470,7 +469,7 @@ mm_answer_sign(int socket, Buffer *m)
        if (key_sign(key, &signature, &siglen, p, datlen) < 0)
                fatal("%s: key_sign failed", __func__);
 
-       debug3("%s: signature %p(%d)", __func__, signature, siglen);
+       debug3("%s: signature %p(%u)", __func__, signature, siglen);
 
        buffer_clear(m);
        buffer_put_string(m, signature, siglen);
@@ -980,14 +979,14 @@ mm_answer_keyverify(int socket, Buffer *m)
        xfree(signature);
        xfree(data);
 
+       auth_method = key_blobtype == MM_USERKEY ? "publickey" : "hostbased";
+
        monitor_reset_key_state();
 
        buffer_clear(m);
        buffer_put_int(m, verified);
        mm_request_send(socket, MONITOR_ANS_KEYVERIFY, m);
 
-       auth_method = key_blobtype == MM_USERKEY ? "publickey" : "hostbased";
-
        return (verified);
 }
 
@@ -1330,7 +1329,8 @@ monitor_apply_keystate(struct monitor *pmonitor)
            sizeof(outgoing_stream));
 
        /* Update with new address */
-       mm_init_compression(pmonitor->m_zlib);
+       if (options.compression)
+               mm_init_compression(pmonitor->m_zlib);
 
        /* Network I/O buffers */
        /* XXX inefficient for large buffers, need: buffer_init_from_string */
@@ -1453,9 +1453,13 @@ mm_get_keystate(struct monitor *pmonitor)
 void *
 mm_zalloc(struct mm_master *mm, u_int ncount, u_int size)
 {
+       int len = size * ncount;
        void *address;
 
-       address = mm_malloc(mm, size * ncount);
+       if (len <= 0)
+               fatal("%s: mm_zalloc(%u, %u)", __func__, ncount, size);
+
+       address = mm_malloc(mm, len);
 
        return (address);
 }
@@ -1515,11 +1519,13 @@ monitor_init(void)
        mon->m_sendfd = pair[1];
 
        /* Used to share zlib space across processes */
-       mon->m_zback = mm_create(NULL, MM_MEMSIZE);
-       mon->m_zlib = mm_create(mon->m_zback, 20 * MM_MEMSIZE);
+       if (options.compression) {
+               mon->m_zback = mm_create(NULL, MM_MEMSIZE);
+               mon->m_zlib = mm_create(mon->m_zback, 20 * MM_MEMSIZE);
 
-       /* Compression needs to share state across borders */
-       mm_init_compression(mon->m_zlib);
+               /* Compression needs to share state across borders */
+               mm_init_compression(mon->m_zlib);
+       }
 
        return mon;
 }
This page took 0.036941 seconds and 4 git commands to generate.