- provos@cvs.openbsd.org 2001/06/22 21:57:59
     [dh.c]
     increase linebuffer to deal with larger moduli; use rewind instead of
     close/open
diff --git a/ChangeLog b/ChangeLog
index 2c964d9..5c0b462 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -25,6 +25,10 @@
      merge authorized_keys2 into authorized_keys.
      authorized_keys2 is used for backward compat.
      (just append authorized_keys2 to authorized_keys).
+   - provos@cvs.openbsd.org 2001/06/22 21:57:59
+     [dh.c]
+     increase linebuffer to deal with larger moduli; use rewind instead of
+     close/open
 
 20010622
  - (stevesk) handle systems without pw_expire and pw_change.
@@ -5709,4 +5713,4 @@
  - Wrote replacements for strlcpy and mkdtemp
  - Released 1.0pre1
 
-$Id: ChangeLog,v 1.1302 2001/06/25 04:17:12 mouring Exp $
+$Id: ChangeLog,v 1.1303 2001/06/25 04:18:59 mouring Exp $
diff --git a/dh.c b/dh.c
index 26deb9f..66eb955 100644
--- a/dh.c
+++ b/dh.c
@@ -23,7 +23,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: dh.c,v 1.15 2001/06/22 21:27:07 provos Exp $");
+RCSID("$OpenBSD: dh.c,v 1.16 2001/06/22 21:57:59 provos Exp $");
 
 #include "xmalloc.h"
 
@@ -103,7 +103,7 @@
 choose_dh(int min, int wantbits, int max)
 {
 	FILE *f;
-	char line[1024];
+	char line[2048];
 	int best, bestcount, which;
 	int linenum;
 	struct dhgroup dhg;
@@ -134,18 +134,14 @@
 		if (dhg.size == best)
 			bestcount++;
 	}
-	fclose (f);
+	rewind(f);
 
 	if (bestcount == 0) {
+		fclose(f);
 		log("WARNING: no suitable primes in %s", _PATH_DH_PRIMES);
 		return (NULL);
 	}
 
-	f = fopen(_PATH_DH_PRIMES, "r");
-	if (!f) {
-		fatal("WARNING: %s disappeared, giving up", _PATH_DH_PRIMES);
-	}
-
 	linenum = 0;
 	which = arc4random() % bestcount;
 	while (fgets(line, sizeof(line), f)) {