=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/sshd.c,v retrieving revision 1.353 retrieving revision 1.354 diff -u -r1.353 -r1.354 --- src/usr.bin/ssh/sshd.c 2007/12/31 15:27:04 1.353 +++ src/usr.bin/ssh/sshd.c 2008/02/13 22:38:17 1.354 @@ -1,4 +1,4 @@ -/* $OpenBSD: sshd.c,v 1.353 2007/12/31 15:27:04 dtucker Exp $ */ +/* $OpenBSD: sshd.c,v 1.354 2008/02/13 22:38:17 djm Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -566,11 +566,12 @@ u_int32_t rnd[256]; gid_t gidset[1]; struct passwd *pw; - int i; + u_int i; /* Enable challenge-response authentication for privilege separation */ privsep_challenge_enable(); + arc4random_stir(); for (i = 0; i < 256; i++) rnd[i] = arc4random(); RAND_seed(rnd, sizeof(rnd)); @@ -651,6 +652,9 @@ static void privsep_postauth(Authctxt *authctxt) { + u_int32_t rnd[256]; + u_int i; + if (authctxt->pw->pw_uid == 0 || options.use_login) { /* File descriptor passing is broken or root login */ use_privsep = 0; @@ -677,6 +681,11 @@ /* Demote the private keys to public keys. */ demote_sensitive_data(); + + arc4random_stir(); + for (i = 0; i < 256; i++) + rnd[i] = arc4random(); + RAND_seed(rnd, sizeof(rnd)); /* Drop privileges */ do_setusercontext(authctxt->pw);