app-forensics/honggfuzz: unbreak --linux_perf_bts_block flag

Workaround --linux_perf_bts_block flag breakage.

Mateusz reports that running honggfuzz fails as:
    [2016-11-11T21:54:27+0000][W][1190] arch_perfOpen():223 mmap(mmapAuxBuf) failed,
    try increasing the kernel.perf_event_mlock_kb sysctl (up to even 300000000): Cannot allocate memory

It seems aux data also needs WRITE permissions.

Reported-by: Mateusz Lenik

Package-Manager: portage-2.3.2
This commit is contained in:
Sergei Trofimovich
2016-11-11 23:02:48 +00:00
parent dedaa68dc7
commit 46ee4b72fa
2 changed files with 61 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
Workaround --linux_perf_bts_block flag breakage.
Mateusz reports that running honggfuzz fails as:
[2016-11-11T21:54:27+0000][W][1190] arch_perfOpen():223 mmap(mmapAuxBuf) failed,
try increasing the kernel.perf_event_mlock_kb sysctl (up to even 300000000): Cannot allocate memory
It seems aux data also needs WRITE permissions.
Reported-by: Mateusz Lenik
diff --git a/linux/perf.c b/linux/perf.c
index d8ede5f..2f71b3d 100644
--- a/linux/perf.c
+++ b/linux/perf.c
@@ -217,3 +217,4 @@ static bool arch_perfOpen(honggfuzz_t * hfuzz, fuzzer_t * fuzzer UNUSED, pid_t p
fuzzer->linux.perfMmapAux =
- mmap(NULL, pem->aux_size, PROT_READ, MAP_SHARED, *perfFd, pem->aux_offset);
+ mmap(NULL, pem->aux_size, PROT_READ | PROT_WRITE, MAP_SHARED, *perfFd, pem->aux_offset);
+
if (fuzzer->linux.perfMmapAux == MAP_FAILED) {

View File

@@ -0,0 +1,42 @@
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=6
inherit toolchain-funcs
DESCRIPTION="A general purpose fuzzer with feedback support"
HOMEPAGE="http://google.github.io/honggfuzz/"
SRC_URI="https://github.com/google/honggfuzz/archive/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64"
IUSE=""
RDEPEND="
sys-libs/binutils-libs:=
sys-libs/libunwind
"
DEPEND="${RDEPEND}"
DOCS=(
CHANGELOG
COPYING
CONTRIBUTING
README.md
)
PATCHES=("${FILESDIR}"/${P}-bts-perms.patch)
src_compile() {
CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" emake
}
src_install() {
dobin ${PN}
einstalldocs
}