version 1.22.2.1, 2003/09/16 20:50:43 |
version 1.22.2.2, 2004/03/04 18:18:16 |
|
|
extern struct monitor *pmonitor; |
extern struct monitor *pmonitor; |
extern Buffer input, output; |
extern Buffer input, output; |
|
|
|
int |
|
mm_is_monitor(void) |
|
{ |
|
/* |
|
* m_pid is only set in the privileged part, and |
|
* points to the unprivileged child. |
|
*/ |
|
return (pmonitor && pmonitor->m_pid > 0); |
|
} |
|
|
void |
void |
mm_request_send(int socket, enum monitor_reqtype type, Buffer *m) |
mm_request_send(int socket, enum monitor_reqtype type, Buffer *m) |
{ |
{ |
|
|
res = atomicio(read, socket, buf, sizeof(buf)); |
res = atomicio(read, socket, buf, sizeof(buf)); |
if (res != sizeof(buf)) { |
if (res != sizeof(buf)) { |
if (res == 0) |
if (res == 0) |
fatal_cleanup(); |
cleanup_exit(255); |
fatal("%s: read: %ld", __func__, (long)res); |
fatal("%s: read: %ld", __func__, (long)res); |
} |
} |
msg_len = GET_32BIT(buf); |
msg_len = GET_32BIT(buf); |
|
|
return (pw); |
return (pw); |
} |
} |
|
|
char *mm_auth2_read_banner(void) |
char * |
|
mm_auth2_read_banner(void) |
{ |
{ |
Buffer m; |
Buffer m; |
char *banner; |
char *banner; |
|
|
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTH2_READ_BANNER, &m); |
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTH2_READ_BANNER, &m); |
buffer_clear(&m); |
buffer_clear(&m); |
|
|
mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_AUTH2_READ_BANNER, &m); |
mm_request_receive_expect(pmonitor->m_recvfd, |
|
MONITOR_ANS_AUTH2_READ_BANNER, &m); |
banner = buffer_get_string(&m, NULL); |
banner = buffer_get_string(&m, NULL); |
buffer_free(&m); |
buffer_free(&m); |
|
|
|
/* treat empty banner as missing banner */ |
|
if (strlen(banner) == 0) { |
|
xfree(banner); |
|
banner = NULL; |
|
} |
return (banner); |
return (banner); |
} |
} |
|
|
|
|
} |
} |
|
|
void |
void |
mm_session_pty_cleanup2(void *session) |
mm_session_pty_cleanup2(Session *s) |
{ |
{ |
Session *s = session; |
|
Buffer m; |
Buffer m; |
|
|
if (s->ttyfd == -1) |
if (s->ttyfd == -1) |
|
|
buffer_free(&m); |
buffer_free(&m); |
|
|
return (major); |
return (major); |
|
} |
|
|
|
OM_uint32 |
|
mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic) |
|
{ |
|
Buffer m; |
|
OM_uint32 major; |
|
|
|
buffer_init(&m); |
|
buffer_put_string(&m, gssbuf->value, gssbuf->length); |
|
buffer_put_string(&m, gssmic->value, gssmic->length); |
|
|
|
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSCHECKMIC, &m); |
|
mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSCHECKMIC, |
|
&m); |
|
|
|
major = buffer_get_int(&m); |
|
buffer_free(&m); |
|
return(major); |
} |
} |
|
|
int |
int |