/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
contrib/libs/libc_compat/explicit_bzero.c
58 строк
1 KB
qkrorlqr
Initial NBS OpenSource export
28 апр 2023, 21:54
28 апр 2023, 21:54
783a858
Код
Авторство
О чём код?
/*------------------------------------------------------------------------- * * explicit_bzero.c * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/port/explicit_bzero.c * *------------------------------------------------------------------------- */ #include <stddef.h> #include <string.h> #if defined(HAVE_MEMSET_S) void explicit_bzero(void *buf, size_t len) { (void) memset_s(buf, len, 0, len); } #elif defined(WIN32) #include <Windows.h> void explicit_bzero(void *buf, size_t len) { (void) SecureZeroMemory(buf, len); } #else /* * Indirect call through a volatile pointer to hopefully avoid dead-store * optimisation eliminating the call. (Idea taken from OpenSSH.) We can't * assume bzero() is present either, so for simplicity we define our own. */ static void bzero2(void *buf, size_t len) { memset(buf, 0, len); } static void (*volatile bzero_p) (void *, size_t) = bzero2; void explicit_bzero(void *buf, size_t len) { bzero_p(buf, len); } #endif