mirror of
https://github.com/postgres/postgres.git
synced 2026-03-22 10:30:21 -04:00
Check for memset_explicit() and explicit_memset()
We can use either of these to implement a missing explicit_bzero(). explicit_memset() is supported on NetBSD. NetBSD hitherto didn't have a way to implement explicit_bzero() other than the fallback variant. memset_explicit() is the C23 standard, so we use it as first preference. It is currently supported on: - NetBSD 11 - FreeBSD 15 - glibc 2.43 It doesn't provide additional coverage, but as it's the new standard, its availability will presumably grow. Reviewed-by: Bertrand Drouvot <bertranddrouvot.pg@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/c4701776-8d99-41da-938d-88528a3adc15%40eisentraut.org
This commit is contained in:
parent
f68d7e7483
commit
386ca3908d
5 changed files with 28 additions and 2 deletions
2
configure
vendored
2
configure
vendored
|
|
@ -15742,7 +15742,7 @@ fi
|
|||
LIBS_including_readline="$LIBS"
|
||||
LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
|
||||
|
||||
for ac_func in backtrace_symbols copyfile copy_file_range elf_aux_info getauxval getifaddrs getpeerucred inet_pton kqueue localeconv_l mbstowcs_l posix_fallocate ppoll pthread_is_threaded_np setproctitle setproctitle_fast strsignal syncfs sync_file_range uselocale wcstombs_l
|
||||
for ac_func in backtrace_symbols copyfile copy_file_range elf_aux_info explicit_memset getauxval getifaddrs getpeerucred inet_pton kqueue localeconv_l mbstowcs_l memset_explicit posix_fallocate ppoll pthread_is_threaded_np setproctitle setproctitle_fast strsignal syncfs sync_file_range uselocale wcstombs_l
|
||||
do :
|
||||
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
||||
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
||||
|
|
|
|||
|
|
@ -1841,6 +1841,7 @@ AC_CHECK_FUNCS(m4_normalize([
|
|||
copyfile
|
||||
copy_file_range
|
||||
elf_aux_info
|
||||
explicit_memset
|
||||
getauxval
|
||||
getifaddrs
|
||||
getpeerucred
|
||||
|
|
@ -1848,6 +1849,7 @@ AC_CHECK_FUNCS(m4_normalize([
|
|||
kqueue
|
||||
localeconv_l
|
||||
mbstowcs_l
|
||||
memset_explicit
|
||||
posix_fallocate
|
||||
ppoll
|
||||
pthread_is_threaded_np
|
||||
|
|
|
|||
|
|
@ -3015,6 +3015,7 @@ func_checks = [
|
|||
['dlsym', {'dependencies': [dl_dep], 'define': false}],
|
||||
['elf_aux_info'],
|
||||
['explicit_bzero'],
|
||||
['explicit_memset'],
|
||||
['getauxval'],
|
||||
['getifaddrs'],
|
||||
['getopt', {'dependencies': [getopt_dep, gnugetopt_dep], 'skip': always_replace_getopt}],
|
||||
|
|
@ -3026,6 +3027,7 @@ func_checks = [
|
|||
['kqueue'],
|
||||
['localeconv_l'],
|
||||
['mbstowcs_l'],
|
||||
['memset_explicit'],
|
||||
['mkdtemp'],
|
||||
['posix_fadvise'],
|
||||
['posix_fallocate'],
|
||||
|
|
|
|||
|
|
@ -128,6 +128,9 @@
|
|||
/* Define to 1 if you have the `explicit_bzero' function. */
|
||||
#undef HAVE_EXPLICIT_BZERO
|
||||
|
||||
/* Define to 1 if you have the `explicit_memset' function. */
|
||||
#undef HAVE_EXPLICIT_MEMSET
|
||||
|
||||
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
|
||||
#undef HAVE_FSEEKO
|
||||
|
||||
|
|
@ -277,6 +280,9 @@
|
|||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the `memset_explicit' function. */
|
||||
#undef HAVE_MEMSET_EXPLICIT
|
||||
|
||||
/* Define to 1 if you have the `mkdtemp' function. */
|
||||
#undef HAVE_MKDTEMP
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,23 @@
|
|||
|
||||
#include "c.h"
|
||||
|
||||
#if HAVE_DECL_MEMSET_S
|
||||
#if defined(HAVE_MEMSET_EXPLICIT)
|
||||
|
||||
void
|
||||
explicit_bzero(void *buf, size_t len)
|
||||
{
|
||||
(void) memset_explicit(buf, 0, len);
|
||||
}
|
||||
|
||||
#elif defined(HAVE_EXPLICIT_MEMSET)
|
||||
|
||||
void
|
||||
explicit_bzero(void *buf, size_t len)
|
||||
{
|
||||
(void) explicit_memset(buf, 0, len);
|
||||
}
|
||||
|
||||
#elif HAVE_DECL_MEMSET_S
|
||||
|
||||
void
|
||||
explicit_bzero(void *buf, size_t len)
|
||||
|
|
|
|||
Loading…
Reference in a new issue