From c0815c927e177f27b1bcd6370e4c2b10caf95efe Mon Sep 17 00:00:00 2001 From: Darren Tucker Date: Mon, 22 Sep 2003 21:05:50 +1000 Subject: [PATCH] - miod@cvs.openbsd.org 2003/09/18 13:02:21 [authfd.c bufaux.c dh.c mac.c ssh-keygen.c] A few signedness fixes for harmless situations; markus@ ok --- ChangeLog | 5 ++++- authfd.c | 9 +++++---- bufaux.c | 8 ++++---- dh.c | 4 ++-- mac.c | 4 ++-- ssh-keygen.c | 6 +++--- 6 files changed, 20 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7ba84a77c..5f6f0403e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -43,6 +43,9 @@ [deattack.c misc.c session.c ssh-agent.c] more buffer allocation fixes; from Solar Designer; CAN-2003-0682; ok millert@ + - miod@cvs.openbsd.org 2003/09/18 13:02:21 + [authfd.c bufaux.c dh.c mac.c ssh-keygen.c] + A few signedness fixes for harmless situations; markus@ ok 20030919 - (djm) Bug #683: Remove reference to --with-ipv4-default from INSTALL; @@ -1179,4 +1182,4 @@ - Fix sshd BindAddress and -b options for systems using fake-getaddrinfo. Report from murple@murple.net, diagnosis from dtucker@zip.com.au -$Id: ChangeLog,v 1.3027 2003/09/22 11:04:23 dtucker Exp $ +$Id: ChangeLog,v 1.3028 2003/09/22 11:05:50 dtucker Exp $ diff --git a/authfd.c b/authfd.c index c78db6d94..5fdf1ca3d 100644 --- a/authfd.c +++ b/authfd.c @@ -35,7 +35,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: authfd.c,v 1.61 2003/06/28 16:23:06 deraadt Exp $"); +RCSID("$OpenBSD: authfd.c,v 1.62 2003/09/18 13:02:21 miod Exp $"); #include @@ -114,7 +114,8 @@ ssh_get_authentication_socket(void) static int ssh_request_reply(AuthenticationConnection *auth, Buffer *request, Buffer *reply) { - int l, len; + int l; + u_int len; char buf[1024]; /* Get the length of the message, and format it in the buffer. */ @@ -147,7 +148,7 @@ ssh_request_reply(AuthenticationConnection *auth, Buffer *request, Buffer *reply /* Extract the length, and check it for sanity. */ len = GET_32BIT(buf); if (len > 256 * 1024) - fatal("Authentication response too long: %d", len); + fatal("Authentication response too long: %u", len); /* Read the rest of the response in to the buffer. */ buffer_clear(reply); @@ -292,7 +293,7 @@ ssh_get_num_identities(AuthenticationConnection *auth, int version) /* Get the number of entries in the response and check it for sanity. */ auth->howmany = buffer_get_int(&auth->identities); - if (auth->howmany > 1024) + if ((u_int)auth->howmany > 1024) fatal("Too many identities in authentication reply: %d", auth->howmany); diff --git a/bufaux.c b/bufaux.c index 37cc27ff6..1df15b548 100644 --- a/bufaux.c +++ b/bufaux.c @@ -37,7 +37,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: bufaux.c,v 1.29 2003/04/08 20:21:28 itojun Exp $"); +RCSID("$OpenBSD: bufaux.c,v 1.30 2003/09/18 13:02:21 miod Exp $"); #include #include "bufaux.h" @@ -80,7 +80,7 @@ buffer_put_bignum(Buffer *buffer, BIGNUM *value) void buffer_get_bignum(Buffer *buffer, BIGNUM *value) { - int bits, bytes; + u_int bits, bytes; u_char buf[2], *bin; /* Get the number for bits. */ @@ -103,10 +103,10 @@ buffer_get_bignum(Buffer *buffer, BIGNUM *value) void buffer_put_bignum2(Buffer *buffer, BIGNUM *value) { - int bytes = BN_num_bytes(value) + 1; + u_int bytes = BN_num_bytes(value) + 1; u_char *buf = xmalloc(bytes); int oi; - int hasnohigh = 0; + u_int hasnohigh = 0; buf[0] = '\0'; /* Get the value of in binary */ diff --git a/dh.c b/dh.c index 996428b7f..c924efee0 100644 --- a/dh.c +++ b/dh.c @@ -23,7 +23,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: dh.c,v 1.24 2003/04/08 20:21:28 itojun Exp $"); +RCSID("$OpenBSD: dh.c,v 1.25 2003/09/18 13:02:21 miod Exp $"); #include "xmalloc.h" @@ -198,7 +198,7 @@ dh_gen_key(DH *dh, int need) if (dh->p == NULL) fatal("dh_gen_key: dh->p == NULL"); - if (2*need >= BN_num_bits(dh->p)) + if (need > INT_MAX / 2 || 2 * need >= BN_num_bits(dh->p)) fatal("dh_gen_key: group too small: %d (2*need %d)", BN_num_bits(dh->p), 2*need); do { diff --git a/mac.c b/mac.c index ab9a03d84..097f0b93b 100644 --- a/mac.c +++ b/mac.c @@ -23,7 +23,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: mac.c,v 1.5 2002/05/16 22:02:50 markus Exp $"); +RCSID("$OpenBSD: mac.c,v 1.6 2003/09/18 13:02:21 miod Exp $"); #include @@ -77,7 +77,7 @@ mac_compute(Mac *mac, u_int32_t seqno, u_char *data, int datalen) if (mac->key == NULL) fatal("mac_compute: no key"); - if (mac->mac_len > sizeof(m)) + if ((u_int)mac->mac_len > sizeof(m)) fatal("mac_compute: mac too long"); HMAC_Init(&c, mac->key, mac->key_len, mac->md); PUT_32BIT(b, seqno); diff --git a/ssh-keygen.c b/ssh-keygen.c index e74d3cd37..5b7bc400a 100644 --- a/ssh-keygen.c +++ b/ssh-keygen.c @@ -12,7 +12,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: ssh-keygen.c,v 1.108 2003/08/14 16:08:58 markus Exp $"); +RCSID("$OpenBSD: ssh-keygen.c,v 1.109 2003/09/18 13:02:21 miod Exp $"); #include #include @@ -191,8 +191,8 @@ do_convert_to_ssh2(struct passwd *pw) static void buffer_get_bignum_bits(Buffer *b, BIGNUM *value) { - int bits = buffer_get_int(b); - int bytes = (bits + 7) / 8; + u_int bits = buffer_get_int(b); + u_int bytes = (bits + 7) / 8; if (buffer_len(b) < bytes) fatal("buffer_get_bignum_bits: input buffer too small: "