cmake: Fix fuzzing fmap leak detection

The fuzz targets should use malloc instead of mmap because libFuzzer
doesn't seem to track mmap leaks.

The ENABLE_FUZZ feature disables HAVE_MMAP which is supposed to
disable use of mmap in favor of malloc, but it doesn't because
checks for the ANONYMOUS_MAP feature execute even if HAVE_MMAP
is disabled, and some mmap usage in libclamav only tests if
ANONYMOUS_MAP is defined without checking HAVE_MMAP.

This commit will only define ANONYMOUS_MAP if HAVE_MMAP is set.
pull/155/head
Andrew 4 years ago committed by Micah Snyder (micasnyd)
parent 23e067bac7
commit 1eff784d51
  1. 44
      cmake/CheckFmapFeatures.cmake

@ -86,36 +86,38 @@ else()
endif()
# Check the flag name for the ANONYMOUS_MAP feature.
check_c_source_compiles(
"
#include <sys/mman.h>
int main(void)
{
mmap((void *)0, 0, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
return 0;
}
"
HAVE_MMAP_MAP_ANONYMOUS
)
if(HAVE_MMAP_MAP_ANONYMOUS)
set(ANONYMOUS_MAP MAP_ANONYMOUS)
else()
if(HAVE_MMAP)
check_c_source_compiles(
"
/* OPENBSD WORKAROUND - DND*/
#include <sys/types.h>
/* OPENBSD WORKAROUND - END*/
#include <sys/mman.h>
int main(void)
{
mmap((void *)0, 0, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0);
mmap((void *)0, 0, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
return 0;
}
"
HAVE_MMAP_MAP_ANON
HAVE_MMAP_MAP_ANONYMOUS
)
if(HAVE_MMAP_MAP_ANON)
set(ANONYMOUS_MAP MAP_ANON)
if(HAVE_MMAP_MAP_ANONYMOUS)
set(ANONYMOUS_MAP MAP_ANONYMOUS)
else()
check_c_source_compiles(
"
/* OPENBSD WORKAROUND - DND*/
#include <sys/types.h>
/* OPENBSD WORKAROUND - END*/
#include <sys/mman.h>
int main(void)
{
mmap((void *)0, 0, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0);
return 0;
}
"
HAVE_MMAP_MAP_ANON
)
if(HAVE_MMAP_MAP_ANON)
set(ANONYMOUS_MAP MAP_ANON)
endif()
endif()
endif()

Loading…
Cancel
Save