diff options
Diffstat (limited to 'dh.c')
-rw-r--r-- | dh.c | 12 |
1 files changed, 4 insertions, 8 deletions
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: dh.c,v 1.15 2001/06/22 21:27:07 provos Exp $"); | 26 | RCSID("$OpenBSD: dh.c,v 1.16 2001/06/22 21:57:59 provos Exp $"); |
27 | 27 | ||
28 | #include "xmalloc.h" | 28 | #include "xmalloc.h" |
29 | 29 | ||
@@ -103,7 +103,7 @@ DH * | |||
103 | choose_dh(int min, int wantbits, int max) | 103 | choose_dh(int min, int wantbits, int max) |
104 | { | 104 | { |
105 | FILE *f; | 105 | FILE *f; |
106 | char line[1024]; | 106 | char line[2048]; |
107 | int best, bestcount, which; | 107 | int best, bestcount, which; |
108 | int linenum; | 108 | int linenum; |
109 | struct dhgroup dhg; | 109 | struct dhgroup dhg; |
@@ -134,18 +134,14 @@ choose_dh(int min, int wantbits, int max) | |||
134 | if (dhg.size == best) | 134 | if (dhg.size == best) |
135 | bestcount++; | 135 | bestcount++; |
136 | } | 136 | } |
137 | fclose (f); | 137 | rewind(f); |
138 | 138 | ||
139 | if (bestcount == 0) { | 139 | if (bestcount == 0) { |
140 | fclose(f); | ||
140 | log("WARNING: no suitable primes in %s", _PATH_DH_PRIMES); | 141 | log("WARNING: no suitable primes in %s", _PATH_DH_PRIMES); |
141 | return (NULL); | 142 | return (NULL); |
142 | } | 143 | } |
143 | 144 | ||
144 | f = fopen(_PATH_DH_PRIMES, "r"); | ||
145 | if (!f) { | ||
146 | fatal("WARNING: %s disappeared, giving up", _PATH_DH_PRIMES); | ||
147 | } | ||
148 | |||
149 | linenum = 0; | 145 | linenum = 0; |
150 | which = arc4random() % bestcount; | 146 | which = arc4random() % bestcount; |
151 | while (fgets(line, sizeof(line), f)) { | 147 | while (fgets(line, sizeof(line), f)) { |