- djm@cvs.openbsd.org 2005/06/17 02:44:33
   [auth1.c] make this -Wsign-compare clean; ok avsm@ markus@
diff --git a/auth1.c b/auth1.c
index b7dfa98..0f6be82 100644
--- a/auth1.c
+++ b/auth1.c
@@ -10,7 +10,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: auth1.c,v 1.60 2005/05/20 12:57:01 djm Exp $");
+RCSID("$OpenBSD: auth1.c,v 1.61 2005/06/17 02:44:32 djm Exp $");
 
 #include "xmalloc.h"
 #include "rsa.h"
@@ -140,7 +140,7 @@
 static int
 auth1_process_rhosts_rsa(Authctxt *authctxt, char *info, size_t infolen)
 {
-	int authenticated = 0;
+	int keybits, authenticated = 0;
 	u_int bits;
 	Key *client_host_key;
 	u_int ulen;
@@ -158,7 +158,8 @@
 	packet_get_bignum(client_host_key->rsa->e);
 	packet_get_bignum(client_host_key->rsa->n);
 
-	if (bits != BN_num_bits(client_host_key->rsa->n)) {
+	keybits = BN_num_bits(client_host_key->rsa->n);
+	if (keybits < 0 || bits != (u_int)keybits) {
 		verbose("Warning: keysize mismatch for client_host_key: "
 		    "actual %d, announced %d",
 		    BN_num_bits(client_host_key->rsa->n), bits);