Skip to content

Commit 3807a30

Browse files
committed
Merge remote-tracking branch 'origin/patches-2.0'
Conflicts: util-internal.h
2 parents c149a1a + c83efb8 commit 3807a30

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed

arc4random.c

+6-6
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ arc4_seed_win32(void)
162162
if (!CryptGenRandom(provider, sizeof(buf), buf))
163163
return -1;
164164
arc4_addrandom(buf, sizeof(buf));
165-
memset(buf, 0, sizeof(buf));
165+
evutil_memclear_(buf, sizeof(buf));
166166
arc4_seeded_ok = 1;
167167
return 0;
168168
}
@@ -200,7 +200,7 @@ arc4_seed_sysctl_linux(void)
200200
return -1;
201201

202202
arc4_addrandom(buf, sizeof(buf));
203-
memset(buf, 0, sizeof(buf));
203+
evutil_memclear_(buf, sizeof(buf));
204204
arc4_seeded_ok = 1;
205205
return 0;
206206
}
@@ -240,7 +240,7 @@ arc4_seed_sysctl_bsd(void)
240240
return -1;
241241

242242
arc4_addrandom(buf, sizeof(buf));
243-
memset(buf, 0, sizeof(buf));
243+
evutil_memclear_(buf, sizeof(buf));
244244
arc4_seeded_ok = 1;
245245
return 0;
246246
}
@@ -285,8 +285,8 @@ arc4_seed_proc_sys_kernel_random_uuid(void)
285285
arc4_addrandom(entropy, nybbles/2);
286286
bytes += nybbles/2;
287287
}
288-
memset(entropy, 0, sizeof(entropy));
289-
memset(buf, 0, sizeof(buf));
288+
evutil_memclear_(entropy, sizeof(entropy));
289+
evutil_memclear_(buf, sizeof(buf));
290290
arc4_seeded_ok = 1;
291291
return 0;
292292
}
@@ -310,7 +310,7 @@ static int arc4_seed_urandom_helper_(const char *fname)
310310
if (n != sizeof(buf))
311311
return -1;
312312
arc4_addrandom(buf, sizeof(buf));
313-
memset(buf, 0, sizeof(buf));
313+
evutil_memclear_(buf, sizeof(buf));
314314
arc4_seeded_ok = 1;
315315
return 0;
316316
}

evutil.c

+12
Original file line numberDiff line numberDiff line change
@@ -2400,6 +2400,18 @@ evutil_weakrand_range_(struct evutil_weakrand_state *state, ev_int32_t top)
24002400
return result;
24012401
}
24022402

2403+
/**
2404+
* Volatile pointer to memset: we use this to keep the compiler from
2405+
* eliminating our call to memset.
2406+
*/
2407+
void * (*volatile evutil_memset_volatile_)(void *, int, size_t) = memset;
2408+
2409+
void
2410+
evutil_memclear_(void *mem, size_t len)
2411+
{
2412+
evutil_memset_volatile_(mem, 0, len);
2413+
}
2414+
24032415
int
24042416
evutil_sockaddr_is_loopback_(const struct sockaddr *addr)
24052417
{

util-internal.h

+1
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,7 @@ evutil_socket_t evutil_eventfd_(unsigned initval, int flags);
467467
#define EVUTIL_EFD_CLOEXEC 0x8000
468468
#endif
469469

470+
void evutil_memclear_(void *mem, size_t len);
470471

471472
#ifdef __cplusplus
472473
}

0 commit comments

Comments
 (0)