mirror of
https://github.com/postgres/postgres.git
synced 2025-08-30 06:01:21 +03:00
Includes some manual cleanup of places that pgindent messed up,
most of which weren't per project style anyway.
Notably, it seems some people didn't absorb the style rules of
commit c9d297751
, because there were a bunch of new occurrences
of function calls with a newline just after the left paren, all
with faulty expectations about how the rest of the call would get
indented.
56 lines
1.0 KiB
C
56 lines
1.0 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* explicit_bzero.c
|
|
*
|
|
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
*
|
|
* IDENTIFICATION
|
|
* src/port/explicit_bzero.c
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
#include "c.h"
|
|
|
|
#if defined(HAVE_MEMSET_S)
|
|
|
|
void
|
|
explicit_bzero(void *buf, size_t len)
|
|
{
|
|
(void) memset_s(buf, len, 0, len);
|
|
}
|
|
|
|
#elif defined(WIN32)
|
|
|
|
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
|