version 1.17, 2018/07/09 21:59:10 |
version 1.18, 2020/01/22 04:49:16 |
|
|
u_char buf[5]; |
u_char buf[5]; |
u_int mlen = sshbuf_len(m); |
u_int mlen = sshbuf_len(m); |
|
|
debug3("ssh_msg_send: type %u", (unsigned int)type & 0xff); |
debug3("%s: type %u", __func__, (unsigned int)type & 0xff); |
|
|
put_u32(buf, mlen + 1); |
put_u32(buf, mlen + 1); |
buf[4] = type; /* 1st byte of payload is mesg-type */ |
buf[4] = type; /* 1st byte of payload is mesg-type */ |
if (atomicio(vwrite, fd, buf, sizeof(buf)) != sizeof(buf)) { |
if (atomicio(vwrite, fd, buf, sizeof(buf)) != sizeof(buf)) { |
error("ssh_msg_send: write"); |
error("%s: write: %s", __func__, strerror(errno)); |
return (-1); |
return (-1); |
} |
} |
if (atomicio(vwrite, fd, sshbuf_mutable_ptr(m), mlen) != mlen) { |
if (atomicio(vwrite, fd, sshbuf_mutable_ptr(m), mlen) != mlen) { |
error("ssh_msg_send: write"); |
error("%s: write: %s", __func__, strerror(errno)); |
return (-1); |
return (-1); |
} |
} |
return (0); |
return (0); |
|
|
|
|
if (atomicio(read, fd, buf, sizeof(buf)) != sizeof(buf)) { |
if (atomicio(read, fd, buf, sizeof(buf)) != sizeof(buf)) { |
if (errno != EPIPE) |
if (errno != EPIPE) |
error("ssh_msg_recv: read: header"); |
error("%s: read header: %s", __func__, strerror(errno)); |
return (-1); |
return (-1); |
} |
} |
msg_len = get_u32(buf); |
msg_len = get_u32(buf); |
if (msg_len > 256 * 1024) { |
if (msg_len > 256 * 1024) { |
error("ssh_msg_recv: read: bad msg_len %u", msg_len); |
error("%s: read: bad msg_len %u", __func__, msg_len); |
return (-1); |
return (-1); |
} |
} |
sshbuf_reset(m); |
sshbuf_reset(m); |
|
|
return -1; |
return -1; |
} |
} |
if (atomicio(read, fd, p, msg_len) != msg_len) { |
if (atomicio(read, fd, p, msg_len) != msg_len) { |
error("ssh_msg_recv: read: %s", strerror(errno)); |
error("%s: read: %s", __func__, strerror(errno)); |
return (-1); |
return (-1); |
} |
} |
return (0); |
return (0); |