0
0
mirror of https://gitlab.torproject.org/tpo/core/tor.git synced 2024-09-20 12:22:14 +02:00

Check for getpagesize before using it to mmap files

This fixes compilation in some MinGW environments.

Fixes bug 20530; bugfix on commit bf72878 in tor-0.1.2.1-alpha.
Reported by "ice".
This commit is contained in:
teor 2016-11-03 08:44:57 +11:00
parent ff3e08f2af
commit 8f465808a0
No known key found for this signature in database
GPG Key ID: 450CBA7F968F094B
3 changed files with 21 additions and 1 deletions

4
changes/bug20530 Normal file
View File

@ -0,0 +1,4 @@
o Minor Fixes (Windows):
- Check for getpagesize before using it to mmap files. This fixes
compilation in some MinGW environments. Fixes bug 20530; bugfix on
commit bf72878 in tor-0.1.2.1-alpha, reported by "ice".

View File

@ -1410,6 +1410,14 @@ AC_CHECK_DECLS([mlockall], , , [
#include <sys/mman.h>
#endif])
# Some MinGW environments don't have getpagesize in unistd.h. We don't use
# AC_CHECK_FUNCS(getpagesize), because other environments rename getpagesize
# using macros
AC_CHECK_DECLS([getpagesize], , , [
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif])
# Allow user to specify an alternate syslog facility
AC_ARG_WITH(syslog-facility,
AS_HELP_STRING(--with-syslog-facility=LOG, [syslog facility to use (default=LOG_DAEMON)]),

View File

@ -204,7 +204,15 @@ tor_rename(const char *path_old, const char *path_new)
sandbox_intern_string(path_new));
}
#if defined(HAVE_SYS_MMAN_H) || defined(RUNNING_DOXYGEN)
/* Some MinGW builds have sys/mman.h, but not the corresponding symbols.
* Other configs rename the symbols using macros (including getpagesize).
* So check for sys/mman.h and unistd.h, and a getpagesize declaration. */
#if (defined(HAVE_SYS_MMAN_H) && defined(HAVE_UNISTD_H) && \
defined(HAVE_DECL_GETPAGESIZE))
#define COMPAT_HAS_MMAN_AND_PAGESIZE
#endif
#if defined(COMPAT_HAS_MMAN_AND_PAGESIZE) || defined(RUNNING_DOXYGEN)
/** Try to create a memory mapping for <b>filename</b> and return it. On
* failure, return NULL. Sets errno properly, using ERANGE to mean
* "empty file". */