- OpenBSD CVS Changes
   - [canohost.c]
     fix get_remote_port() and friends for sshd -i;
     Holger.Trapp@Informatik.TU-Chemnitz.DE
   - [mpaux.c]
     make code simpler. no need for memcpy. niels@ ok
   - [pty.c]
     namebuflen not sizeof namebuflen; bnd@ep-ag.com via djm@mindrot.org
     fix proto; markus
   - [ssh.1]
      typo; mark.baushke@solipsa.com
   - [channels.c ssh.c ssh.h sshd.c]
     type conflict for 'extern Type *options' in channels.c; dot@dotat.at
   - [sshconnect.c]
     move checking of hostkey into own function.
   - [version.h]
     OpenSSH-1.2.1
diff --git a/mpaux.c b/mpaux.c
index 7bc7c13..24e9ce1 100644
--- a/mpaux.c
+++ b/mpaux.c
@@ -15,7 +15,7 @@
 */
 
 #include "includes.h"
-RCSID("$Id: mpaux.c,v 1.7 1999/11/24 13:26:22 damien Exp $");
+RCSID("$Id: mpaux.c,v 1.8 1999/12/13 23:47:16 damien Exp $");
 
 #include "getput.h"
 #include "xmalloc.h"
@@ -35,17 +35,17 @@
 		   BIGNUM* host_key_n,
 		   BIGNUM* session_key_n)
 {
-	unsigned int host_key_bits = BN_num_bits(host_key_n);
-	unsigned int session_key_bits = BN_num_bits(session_key_n);
-	unsigned int bytes = (host_key_bits + 7) / 8 + (session_key_bits + 7) / 8 + 8;
+	unsigned int host_key_bytes = BN_num_bytes(host_key_n);
+	unsigned int session_key_bytes = BN_num_bytes(session_key_n);
+	unsigned int bytes = host_key_bytes + session_key_bytes;
 	unsigned char *buf = xmalloc(bytes);
 	MD5_CTX md;
 
 	BN_bn2bin(host_key_n, buf);
-	BN_bn2bin(session_key_n, buf + (host_key_bits + 7) / 8);
-	memcpy(buf + (host_key_bits + 7) / 8 + (session_key_bits + 7) / 8, cookie, 8);
+	BN_bn2bin(session_key_n, buf + host_key_bytes);
 	MD5_Init(&md);
 	MD5_Update(&md, buf, bytes);
+	MD5_Update(&md, cookie, 8);
 	MD5_Final(session_id, &md);
 	memset(buf, 0, bytes);
 	xfree(buf);