=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/packet.h,v retrieving revision 1.25.2.4 retrieving revision 1.26 diff -u -r1.25.2.4 -r1.26 --- src/usr.bin/ssh/packet.h 2002/06/22 07:23:17 1.25.2.4 +++ src/usr.bin/ssh/packet.h 2001/11/07 16:03:17 1.26 @@ -1,5 +1,3 @@ -/* $OpenBSD: packet.h,v 1.25.2.4 2002/06/22 07:23:17 miod Exp $ */ - /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -13,6 +11,8 @@ * called by a name other than "ssh" or "Secure Shell". */ +/* RCSID("$OpenBSD: packet.h,v 1.26 2001/11/07 16:03:17 markus Exp $"); */ + #ifndef PACKET_H #define PACKET_H @@ -24,7 +24,6 @@ int packet_get_connection_out(void); void packet_close(void); void packet_set_encryption_key(const u_char *, u_int, int); -u_int packet_get_encryption_key(u_char *); void packet_set_protocol_flags(u_int); u_int packet_get_protocol_flags(void); void packet_start_compression(int); @@ -36,37 +35,25 @@ void packet_put_int(u_int value); void packet_put_bignum(BIGNUM * value); void packet_put_bignum2(BIGNUM * value); -void packet_put_string(const void *buf, u_int len); +void packet_put_string(const char *buf, u_int len); void packet_put_cstring(const char *str); -void packet_put_raw(const void *buf, u_int len); +void packet_put_raw(const char *buf, u_int len); void packet_send(void); -int packet_read(void); -void packet_read_expect(int type); -int packet_read_poll(void); +int packet_read(int *payload_len_ptr); +void packet_read_expect(int *payload_len_ptr, int type); +int packet_read_poll(int *packet_len_ptr); void packet_process_incoming(const char *buf, u_int len); -int packet_read_seqnr(u_int32_t *seqnr_p); -int packet_read_poll_seqnr(u_int32_t *seqnr_p); u_int packet_get_char(void); u_int packet_get_int(void); -void packet_get_bignum(BIGNUM * value); -void packet_get_bignum2(BIGNUM * value); -void *packet_get_raw(int *length_ptr); -void *packet_get_string(u_int *length_ptr); +void packet_get_bignum(BIGNUM * value, int *length_ptr); +void packet_get_bignum2(BIGNUM * value, int *length_ptr); +char *packet_get_raw(int *length_ptr); +char *packet_get_string(u_int *length_ptr); void packet_disconnect(const char *fmt,...) __attribute__((format(printf, 1, 2))); void packet_send_debug(const char *fmt,...) __attribute__((format(printf, 1, 2))); -void set_newkeys(int mode); -int packet_get_keyiv_len(int); -void packet_get_keyiv(int, u_char *, u_int); -int packet_get_keycontext(int, u_char *); -void packet_set_keycontext(int, u_char *); -u_int32_t packet_get_seqnr(int); -void packet_set_seqnr(int, u_int32_t); -int packet_get_ssh1_cipher(void); -void packet_set_iv(int, u_char *); - void packet_write_poll(void); void packet_write_wait(void); int packet_have_data_to_write(void); @@ -85,8 +72,17 @@ int packet_set_maxsize(int); #define packet_get_maxsize() max_packet_size -/* don't allow remaining bytes after the end of the message */ -#define packet_check_eom() \ +#define packet_integrity_check(payload_len, expected_len, type) \ +do { \ + int _p = (payload_len), _e = (expected_len); \ + if (_p != _e) { \ + log("Packet integrity error (%d != %d) at %s:%d", \ + _p, _e, __FILE__, __LINE__); \ + packet_disconnect("Packet integrity error. (%d)", (type)); \ + } \ +} while (0) + +#define packet_done() \ do { \ int _len = packet_remaining(); \ if (_len > 0) { \