Deleted Added
full compact
explicit_bzero.c (263712) explicit_bzero.c (294328)
1/* OPENBSD ORIGINAL: lib/libc/string/explicit_bzero.c */
2/* $OpenBSD: explicit_bzero.c,v 1.1 2014/01/22 21:06:45 tedu Exp $ */
3/*
4 * Public domain.
5 * Written by Ted Unangst
6 */
7
8#include "includes.h"
9
1/* OPENBSD ORIGINAL: lib/libc/string/explicit_bzero.c */
2/* $OpenBSD: explicit_bzero.c,v 1.1 2014/01/22 21:06:45 tedu Exp $ */
3/*
4 * Public domain.
5 * Written by Ted Unangst
6 */
7
8#include "includes.h"
9
10/*
11 * explicit_bzero - don't let the compiler optimize away bzero
12 */
13
10#ifndef HAVE_EXPLICIT_BZERO
11
14#ifndef HAVE_EXPLICIT_BZERO
15
16#ifdef HAVE_MEMSET_S
17
18void
19explicit_bzero(void *p, size_t n)
20{
21 (void)memset_s(p, n, 0, n);
22}
23
24#else /* HAVE_MEMSET_S */
25
12/*
26/*
13 * explicit_bzero - don't let the compiler optimize away bzero
27 * Indirect bzero through a volatile pointer to hopefully avoid
28 * dead-store optimisation eliminating the call.
14 */
29 */
30static void (* volatile ssh_bzero)(void *, size_t) = bzero;
31
15void
16explicit_bzero(void *p, size_t n)
17{
32void
33explicit_bzero(void *p, size_t n)
34{
18 bzero(p, n);
35 ssh_bzero(p, n);
19}
36}
20#endif
37
38#endif /* HAVE_MEMSET_S */
39
40#endif /* HAVE_EXPLICIT_BZERO */