Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/coreutils/src/lib/explicit_bzero.c |
Source code | Switch to Preprocessed file |
Line | Source | Count |
---|---|---|
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. */ | - |
36 | void | - |
37 | explicit_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:
| 1255 |
Source code | Switch to Preprocessed file |