Skip to content

Commit 7481505

Browse files
committed
plugins: minor refactor
Signed-off-by: Joachim Wiberg <[email protected]>
1 parent 8251f1a commit 7481505

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed

plugins/urandom.c

+22-18
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,23 @@
4242
#define RANDOM_BYTES (32*1024)
4343
#endif
4444

45+
#ifdef RANDOMSEED
46+
static void fallback(FILE *fp)
47+
{
48+
struct timeval tv;
49+
int iter = 128;
50+
51+
gettimeofday(&tv, NULL);
52+
srandom(tv.tv_sec % 3600);
53+
while (iter--) {
54+
uint32_t i, prng = random();
55+
56+
for (i = 0; i < sizeof(prng); i++)
57+
fputc((prng >> (i * CHAR_BIT)) & UCHAR_MAX, fp);
58+
}
59+
}
60+
#endif
61+
4562
static void setup(void *arg)
4663
{
4764
#ifdef RANDOMSEED
@@ -74,26 +91,13 @@ static void setup(void *arg)
7491
size_t len;
7592

7693
len = fread(buf, sizeof(buf[0]), sizeof(buf), hw);
77-
if (len == 0) {
78-
fclose(hw);
79-
goto no_hwrng;
80-
}
81-
82-
len = fwrite(buf, sizeof(buf[0]), len, fp);
94+
if (len == 0)
95+
fallback(fp);
96+
else
97+
len = fwrite(buf, sizeof(buf[0]), len, fp);
8398
fclose(hw);
8499
} else {
85-
no_hwrng:
86-
struct timeval tv;
87-
int iter = 128;
88-
89-
gettimeofday(&tv, NULL);
90-
srandom(tv.tv_sec % 3600);
91-
while (iter--) {
92-
uint32_t i, prng = random();
93-
94-
for (i = 0; i < sizeof(prng); i++)
95-
fputc((prng >> (i * CHAR_BIT)) & UCHAR_MAX, fp);
96-
}
100+
fallback(fp);
97101
}
98102
ret = fclose(fp);
99103
}

0 commit comments

Comments
 (0)