OpenCoverage

explicit_bzero.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssh/src/openbsd-compat/explicit_bzero.c
Source codeSwitch to Preprocessed file
LineSourceCount
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#include <string.h>-
11-
12/*-
13 * explicit_bzero - don't let the compiler optimize away bzero-
14 */-
15-
16#ifndef HAVE_EXPLICIT_BZERO-
17-
18#ifdef HAVE_MEMSET_S-
19-
20void-
21explicit_bzero(void *p, size_t n)-
22{-
23 if (n == 0)-
24 return;-
25 (void)memset_s(p, n, 0, n);-
26}-
27-
28#else /* HAVE_MEMSET_S */-
29-
30/*-
31 * Indirect bzero through a volatile pointer to hopefully avoid-
32 * dead-store optimisation eliminating the call.-
33 */-
34static void (* volatile ssh_bzero)(void *, size_t) = bzero;-
35-
36void-
37explicit_bzero(void *p, size_t n)-
38{-
39 if (n == 0)
n == 0Description
TRUEevaluated 1356 times by 3 tests
Evaluated by:
  • ssh-keygen
  • test_kex
  • test_sshkey
FALSEevaluated 5762854 times by 8 tests
Evaluated by:
  • ssh-keygen
  • sshd
  • test_bitmap
  • test_hostkeys
  • test_kex
  • test_sshbuf
  • test_sshkey
  • test_utf8
1356-5762854
40 return;
executed 1356 times by 3 tests: return;
Executed by:
  • ssh-keygen
  • test_kex
  • test_sshkey
1356
41 /*-
42 * clang -fsanitize=memory needs to intercept memset-like functions-
43 * to correctly detect memory initialisation. Make sure one is called-
44 * directly since our indirection trick above successfully confuses it.-
45 */-
46#if defined(__has_feature)-
47# if __has_feature(memory_sanitizer)-
48 memset(p, 0, n);-
49# endif-
50#endif-
51-
52 ssh_bzero(p, n);-
53}
executed 5762854 times by 8 tests: end of block
Executed by:
  • ssh-keygen
  • sshd
  • test_bitmap
  • test_hostkeys
  • test_kex
  • test_sshbuf
  • test_sshkey
  • test_utf8
5762854
54-
55#endif /* HAVE_MEMSET_S */-
56-
57#endif /* HAVE_EXPLICIT_BZERO */-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2