1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-06-29 02:22:45 +02:00

Use sysconf() when possible as not all platforms have getpagesize().

This commit is contained in:
David Shaw 2007-04-16 13:37:09 +00:00
parent 0b677ba499
commit 3a2e31ff19
5 changed files with 32 additions and 7 deletions

View File

@ -1,3 +1,10 @@
2007-04-16 David Shaw <dshaw@jabberwocky.com>
* acinclude.m4: Use sysconf() if available to avoid a false
positive on HAVE_BROKEN_MLOCK when checking for page size.
* configure.ac: Check for sysconf.
2007-04-15 David Shaw <dshaw@jabberwocky.com> 2007-04-15 David Shaw <dshaw@jabberwocky.com>
* configure.ac: QNX puts resolver functions in libsocket. From * configure.ac: QNX puts resolver functions in libsocket. From

View File

@ -420,7 +420,16 @@ define(GNUPG_CHECK_MLOCK,
{ {
char *pool; char *pool;
int err; int err;
long int pgsize = getpagesize(); long int pgsize;
#if defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE)
pgsize = sysconf(_SC_PAGESIZE);
#elif defined(HAVE_GETPAGESIZE)
pgsize = getpagesize();
#endif
if(pgsize==-1)
pgsize = 4096;
pool = malloc( 4096 + pgsize ); pool = malloc( 4096 + pgsize );
if( !pool ) if( !pool )

View File

@ -953,7 +953,7 @@ AC_CHECK_DECLS(getpagesize)
AC_FUNC_FSEEKO AC_FUNC_FSEEKO
AC_FUNC_VPRINTF AC_FUNC_VPRINTF
AC_FUNC_FORK AC_FUNC_FORK
AC_CHECK_FUNCS(strerror stpcpy strlwr tcgetattr strtoul mmap) AC_CHECK_FUNCS(strerror stpcpy strlwr tcgetattr strtoul mmap sysconf)
AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid times unsetenv getpwnam getpwuid) AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid times unsetenv getpwnam getpwuid)
AC_CHECK_FUNCS(memmove gettimeofday getrusage setrlimit clock_gettime) AC_CHECK_FUNCS(memmove gettimeofday getrusage setrlimit clock_gettime)
AC_CHECK_FUNCS(atexit raise getpagesize strftime nl_langinfo setlocale) AC_CHECK_FUNCS(atexit raise getpagesize strftime nl_langinfo setlocale)

View File

@ -1,3 +1,8 @@
2007-04-16 David Shaw <dshaw@jabberwocky.com>
* secmem.c (init_pool): Use sysconf() if available to determine
page size.
2007-04-15 David Shaw <dshaw@jabberwocky.com> 2007-04-15 David Shaw <dshaw@jabberwocky.com>
* argparse.c (default_strusage): Copyright 2007. * argparse.c (default_strusage): Copyright 2007.

View File

@ -1,5 +1,6 @@
/* secmem.c - memory allocation from a secure heap /* secmem.c - memory allocation from a secure heap
* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
* 2007 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of GnuPG.
* *
@ -218,19 +219,22 @@ lock_pool( void *p, size_t n )
static void static void
init_pool( size_t n) init_pool( size_t n)
{ {
size_t pgsize; size_t pgsize=-1;
poolsize = n; poolsize = n;
if( disable_secmem ) if( disable_secmem )
log_bug("secure memory is disabled"); log_bug("secure memory is disabled");
#ifdef HAVE_GETPAGESIZE #if defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE)
pgsize = sysconf(_SC_PAGESIZE);
#elif defined(HAVE_GETPAGESIZE)
pgsize = getpagesize(); pgsize = getpagesize();
#else
pgsize = 4096;
#endif #endif
if(pgsize==-1)
pgsize = 4096;
#ifdef HAVE_MMAP #ifdef HAVE_MMAP
poolsize = (poolsize + pgsize -1 ) & ~(pgsize-1); poolsize = (poolsize + pgsize -1 ) & ~(pgsize-1);
#ifdef MAP_ANONYMOUS #ifdef MAP_ANONYMOUS