OpenCoverage

explicit_bzero.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/coreutils/src/lib/explicit_bzero.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* Erasure of sensitive data, generic implementation.-
2 Copyright (C) 2016-2018 Free Software Foundation, Inc.-
3 This file is part of the GNU C Library.-
4-
5 The GNU C Library is free software; you can redistribute it and/or-
6 modify it under the terms of the GNU General Public-
7 License as published by the Free Software Foundation; either-
8 version 3 of the License, or (at your option) any later version.-
9-
10 The GNU C Library is distributed in the hope that it will be useful,-
11 but WITHOUT ANY WARRANTY; without even the implied warranty of-
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU-
13 General Public License for more details.-
14-
15 You should have received a copy of the GNU General Public-
16 License along with the GNU C Library; if not, see-
17 <https://www.gnu.org/licenses/>. */-
18-
19/* An assembler implementation of explicit_bzero can be created as an-
20 assembler alias of an optimized bzero implementation.-
21 Architecture-specific implementations also need to define-
22 __explicit_bzero_chk. */-
23-
24#if !_LIBC-
25# include <config.h>-
26#endif-
27-
28#include <string.h>-
29-
30/* glibc-internal users use __explicit_bzero_chk, and explicit_bzero-
31 redirects to that. */-
32#undef explicit_bzero-
33-
34/* Set LEN bytes of S to 0. The compiler will not delete a call to-
35 this function, even if S is dead after the call. */-
36void-
37explicit_bzero (void *s, size_t len)-
38{-
39#ifdef HAVE_EXPLICIT_MEMSET-
40 explicit_memset (s, 0, len);-
41#else-
42 memset (s, '\0', len);-
43# if defined __GNUC__ && !defined __clang__-
44 /* Compiler barrier. */-
45 asm volatile ("" ::: "memory");-
46# endif-
47#endif-
48}
executed 1255 times by 6 tests: end of block
Executed by:
  • cp
  • ln
  • mktemp
  • mv
  • shred
  • sort
1255
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2