1
/* $OpenBSD: monitor_wrap.c,v 1.55 2007/02/19 10:45:58 dtucker Exp $ */
1
/* $OpenBSD: monitor_wrap.c,v 1.63 2008/07/10 18:08:11 markus Exp $ */
3
3
* Copyright 2002 Niels Provos <provos@citi.umich.edu>
4
4
* Copyright 2002 Markus Friedl <markus@openbsd.org>
222
223
mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PWNAM, &m);
224
225
if (buffer_get_char(&m) == 0) {
228
229
pw = buffer_get_string(&m, &len);
229
230
if (len != sizeof(struct passwd))
237
238
pw->pw_dir = buffer_get_string(&m, NULL);
238
239
pw->pw_shell = buffer_get_string(&m, NULL);
240
242
/* copy options block as a Match directive may have changed some */
241
243
newopts = buffer_get_string(&m, &len);
242
244
if (len != sizeof(*newopts))
495
497
/* Mac structure */
496
498
mac->name = buffer_get_string(&b, NULL);
497
if (mac->name == NULL || mac_init(mac, mac->name) == -1)
498
fatal("%s: can not init mac %s", __func__, mac->name);
499
if (mac->name == NULL || mac_setup(mac, mac->name) == -1)
500
fatal("%s: can not setup mac %s", __func__, mac->name);
499
501
mac->enabled = buffer_get_int(&b);
500
502
mac->key = buffer_get_string(&b, &len);
501
503
if (len > mac->key_len)
638
640
buffer_put_string(&m, blob, bloblen);
641
packet_get_state(MODE_OUT, &seqnr, &blocks, &packets);
642
buffer_put_int(&m, seqnr);
643
buffer_put_int64(&m, blocks);
644
buffer_put_int(&m, packets);
645
packet_get_state(MODE_IN, &seqnr, &blocks, &packets);
646
buffer_put_int(&m, seqnr);
647
buffer_put_int64(&m, blocks);
648
buffer_put_int(&m, packets);
643
packet_get_state(MODE_OUT, &seqnr, &blocks, &packets, &bytes);
644
buffer_put_int(&m, seqnr);
645
buffer_put_int64(&m, blocks);
646
buffer_put_int(&m, packets);
647
buffer_put_int64(&m, bytes);
648
packet_get_state(MODE_IN, &seqnr, &blocks, &packets, &bytes);
649
buffer_put_int(&m, seqnr);
650
buffer_put_int64(&m, blocks);
651
buffer_put_int(&m, packets);
652
buffer_put_int64(&m, bytes);
650
654
debug3("%s: New keys have been sent", __func__);
689
int success = 0, tmp1 = -1, tmp2 = -1;
691
/* Kludge: ensure there are fds free to receive the pty/tty */
692
if ((tmp1 = dup(pmonitor->m_recvfd)) == -1 ||
693
(tmp2 = dup(pmonitor->m_recvfd)) == -1) {
694
error("%s: cannot allocate fds for pty", __func__);
688
705
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PTY, &m);
706
723
buffer_append(&loginmsg, msg, strlen(msg));
709
*ptyfd = mm_receive_fd(pmonitor->m_recvfd);
710
*ttyfd = mm_receive_fd(pmonitor->m_recvfd);
726
if ((*ptyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1 ||
727
(*ttyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1)
728
fatal("%s: receive fds failed", __func__);
728
746
/* closed dup'ed master */
729
if (close(s->ptymaster) < 0)
730
error("close(s->ptymaster): %s", strerror(errno));
747
if (s->ptymaster != -1 && close(s->ptymaster) < 0)
748
error("close(s->ptymaster/%d): %s",
749
s->ptymaster, strerror(errno));
732
751
/* unlink pty from session */