version 1.8.4.1, 2006/09/30 04:06:50 |
version 1.9, 2006/03/19 18:51:18 |
|
|
/* $OpenBSD$ */ |
|
/* |
/* |
* Copyright (c) 2002 Markus Friedl. All rights reserved. |
* Copyright (c) 2002 Markus Friedl. All rights reserved. |
* |
* |
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
*/ |
|
#include "includes.h" |
|
|
#include <sys/types.h> |
|
#include <sys/uio.h> |
|
|
|
#include <errno.h> |
|
#include <stdio.h> |
|
#include <string.h> |
|
#include <unistd.h> |
|
#include <stdarg.h> |
|
|
|
#include "buffer.h" |
#include "buffer.h" |
|
#include "getput.h" |
#include "log.h" |
#include "log.h" |
#include "atomicio.h" |
#include "atomicio.h" |
#include "msg.h" |
#include "msg.h" |
#include "misc.h" |
|
|
|
int |
int |
ssh_msg_send(int fd, u_char type, Buffer *m) |
ssh_msg_send(int fd, u_char type, Buffer *m) |
|
|
|
|
debug3("ssh_msg_send: type %u", (unsigned int)type & 0xff); |
debug3("ssh_msg_send: type %u", (unsigned int)type & 0xff); |
|
|
put_u32(buf, mlen + 1); |
PUT_32BIT(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("ssh_msg_send: write"); |
|
|
error("ssh_msg_recv: read: header"); |
error("ssh_msg_recv: read: header"); |
return (-1); |
return (-1); |
} |
} |
msg_len = get_u32(buf); |
msg_len = GET_32BIT(buf); |
if (msg_len > 256 * 1024) { |
if (msg_len > 256 * 1024) { |
error("ssh_msg_recv: read: bad msg_len %u", msg_len); |
error("ssh_msg_recv: read: bad msg_len %u", msg_len); |
return (-1); |
return (-1); |