=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/monitor_wrap.c,v retrieving revision 1.5 retrieving revision 1.5.2.1 diff -u -r1.5 -r1.5.2.1 --- src/usr.bin/ssh/monitor_wrap.c 2002/03/25 20:12:10 1.5 +++ src/usr.bin/ssh/monitor_wrap.c 2002/05/18 04:12:11 1.5.2.1 @@ -25,7 +25,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: monitor_wrap.c,v 1.5 2002/03/25 20:12:10 stevesk Exp $"); +RCSID("$OpenBSD: monitor_wrap.c,v 1.5.2.1 2002/05/18 04:12:11 jason Exp $"); #include #include @@ -56,7 +56,7 @@ extern Newkeys *newkeys[]; extern z_stream incoming_stream; extern z_stream outgoing_stream; -extern struct monitor *monitor; +extern struct monitor *pmonitor; extern Buffer input, output; void @@ -126,10 +126,10 @@ buffer_put_int(&m, nbits); buffer_put_int(&m, max); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_MODULI, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_MODULI, &m); debug3("%s: waiting for MONITOR_ANS_MODULI", __FUNCTION__); - mm_request_receive_expect(monitor->m_recvfd, MONITOR_ANS_MODULI, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_MODULI, &m); success = buffer_get_char(&m); if (success == 0) @@ -151,7 +151,7 @@ int mm_key_sign(Key *key, u_char **sigp, u_int *lenp, u_char *data, u_int datalen) { - Kex *kex = *monitor->m_pkex; + Kex *kex = *pmonitor->m_pkex; Buffer m; debug3("%s entering", __FUNCTION__); @@ -160,10 +160,10 @@ buffer_put_int(&m, kex->host_key_index(key)); buffer_put_string(&m, data, datalen); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_SIGN, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SIGN, &m); debug3("%s: waiting for MONITOR_ANS_SIGN", __FUNCTION__); - mm_request_receive_expect(monitor->m_recvfd, MONITOR_ANS_SIGN, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_SIGN, &m); *sigp = buffer_get_string(&m, lenp); buffer_free(&m); @@ -182,10 +182,10 @@ buffer_init(&m); buffer_put_cstring(&m, login); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_PWNAM, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PWNAM, &m); debug3("%s: waiting for MONITOR_ANS_PWNAM", __FUNCTION__); - mm_request_receive_expect(monitor->m_recvfd, MONITOR_ANS_PWNAM, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PWNAM, &m); if (buffer_get_char(&m) == 0) { buffer_free(&m); @@ -205,6 +205,24 @@ return (pw); } +char* mm_auth2_read_banner(void) +{ + Buffer m; + char *banner; + + debug3("%s entering", __FUNCTION__); + + buffer_init(&m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTH2_READ_BANNER, &m); + buffer_clear(&m); + + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_AUTH2_READ_BANNER, &m); + banner = buffer_get_string(&m, NULL); + buffer_free(&m); + + return (banner); +} + /* Inform the privileged process about service and style */ void @@ -218,7 +236,7 @@ buffer_put_cstring(&m, service); buffer_put_cstring(&m, style ? style : ""); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_AUTHSERV, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHSERV, &m); buffer_free(&m); } @@ -234,10 +252,10 @@ buffer_init(&m); buffer_put_cstring(&m, password); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_AUTHPASSWORD, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHPASSWORD, &m); debug3("%s: waiting for MONITOR_ANS_AUTHPASSWORD", __FUNCTION__); - mm_request_receive_expect(monitor->m_recvfd, MONITOR_ANS_AUTHPASSWORD, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_AUTHPASSWORD, &m); authenticated = buffer_get_int(&m); @@ -307,10 +325,10 @@ buffer_put_string(&m, blob, len); xfree(blob); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_KEYALLOWED, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, &m); debug3("%s: waiting for MONITOR_ANS_KEYALLOWED", __FUNCTION__); - mm_request_receive_expect(monitor->m_recvfd, MONITOR_ANS_KEYALLOWED, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_KEYALLOWED, &m); allowed = buffer_get_int(&m); @@ -348,10 +366,10 @@ buffer_put_string(&m, data, datalen); xfree(blob); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_KEYVERIFY, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYVERIFY, &m); debug3("%s: waiting for MONITOR_ANS_KEYVERIFY", __FUNCTION__); - mm_request_receive_expect(monitor->m_recvfd, MONITOR_ANS_KEYVERIFY, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_KEYVERIFY, &m); verified = buffer_get_int(&m); @@ -490,7 +508,7 @@ } void -mm_send_keystate(struct monitor *monitor) +mm_send_keystate(struct monitor *pmonitor) { Buffer m; u_char *blob, *p; @@ -516,7 +534,7 @@ goto skip; } else { /* Kex for rekeying */ - mm_send_kex(&m, *monitor->m_pkex); + mm_send_kex(&m, *pmonitor->m_pkex); } debug3("%s: Sending new keys: %p %p", @@ -562,7 +580,7 @@ buffer_put_string(&m, buffer_ptr(&input), buffer_len(&input)); buffer_put_string(&m, buffer_ptr(&output), buffer_len(&output)); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_KEYEXPORT, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYEXPORT, &m); debug3("%s: Finished sending state", __FUNCTION__); buffer_free(&m); @@ -576,10 +594,10 @@ int success = 0; buffer_init(&m); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_PTY, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PTY, &m); debug3("%s: waiting for MONITOR_ANS_PTY", __FUNCTION__); - mm_request_receive_expect(monitor->m_recvfd, MONITOR_ANS_PTY, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PTY, &m); success = buffer_get_int(&m); if (success == 0) { @@ -593,8 +611,8 @@ strlcpy(namebuf, p, namebuflen); /* Possible truncation */ xfree(p); - *ptyfd = mm_receive_fd(monitor->m_recvfd); - *ttyfd = mm_receive_fd(monitor->m_recvfd); + *ptyfd = mm_receive_fd(pmonitor->m_recvfd); + *ttyfd = mm_receive_fd(pmonitor->m_recvfd); /* Success */ return (1); @@ -610,7 +628,7 @@ return; buffer_init(&m); buffer_put_cstring(&m, s->tty); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_PTYCLEANUP, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PTYCLEANUP, &m); buffer_free(&m); /* closed dup'ed master */ @@ -629,7 +647,7 @@ Buffer m; buffer_init(&m); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_TERM, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_TERM, &m); buffer_free(&m); } @@ -641,9 +659,9 @@ buffer_init(&m); buffer_put_bignum2(&m, num); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_SESSKEY, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SESSKEY, &m); - mm_request_receive_expect(monitor->m_recvfd, MONITOR_ANS_SESSKEY, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_SESSKEY, &m); rsafail = buffer_get_int(&m); buffer_get_bignum2(&m, num); @@ -676,9 +694,9 @@ debug3("%s: entering", __FUNCTION__); buffer_init(&m); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_BSDAUTHQUERY, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_BSDAUTHQUERY, &m); - mm_request_receive_expect(monitor->m_recvfd, MONITOR_ANS_BSDAUTHQUERY, + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_BSDAUTHQUERY, &m); res = buffer_get_int(&m); if (res == -1) { @@ -711,9 +729,9 @@ buffer_init(&m); buffer_put_cstring(&m, responses[0]); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_BSDAUTHRESPOND, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_BSDAUTHRESPOND, &m); - mm_request_receive_expect(monitor->m_recvfd, + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_BSDAUTHRESPOND, &m); authok = buffer_get_int(&m); @@ -733,9 +751,9 @@ debug3("%s: entering", __FUNCTION__); buffer_init(&m); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_SKEYQUERY, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SKEYQUERY, &m); - mm_request_receive_expect(monitor->m_recvfd, MONITOR_ANS_SKEYQUERY, + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_SKEYQUERY, &m); res = buffer_get_int(&m); if (res == -1) { @@ -774,9 +792,9 @@ buffer_init(&m); buffer_put_cstring(&m, responses[0]); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_SKEYRESPOND, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SKEYRESPOND, &m); - mm_request_receive_expect(monitor->m_recvfd, + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_SKEYRESPOND, &m); authok = buffer_get_int(&m); @@ -797,7 +815,7 @@ for (i = 0; i < 16; i++) buffer_put_char(&m, session_id[i]); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_SESSID, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SESSID, &m); buffer_free(&m); } @@ -815,8 +833,8 @@ buffer_init(&m); buffer_put_bignum2(&m, client_n); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_RSAKEYALLOWED, &m); - mm_request_receive_expect(monitor->m_recvfd, MONITOR_ANS_RSAKEYALLOWED, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSAKEYALLOWED, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSAKEYALLOWED, &m); allowed = buffer_get_int(&m); @@ -855,8 +873,8 @@ buffer_put_string(&m, blob, blen); xfree(blob); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_RSACHALLENGE, &m); - mm_request_receive_expect(monitor->m_recvfd, MONITOR_ANS_RSACHALLENGE, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSACHALLENGE, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSACHALLENGE, &m); buffer_get_bignum2(&m, challenge); buffer_free(&m); @@ -884,8 +902,8 @@ buffer_put_string(&m, response, 16); xfree(blob); - mm_request_send(monitor->m_recvfd, MONITOR_REQ_RSARESPONSE, &m); - mm_request_receive_expect(monitor->m_recvfd, MONITOR_ANS_RSARESPONSE, &m); + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSARESPONSE, &m); + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSARESPONSE, &m); success = buffer_get_int(&m); buffer_free(&m);