homebrew-core/Formula/zzuf.rb
2015-10-02 22:03:44 -07:00

89 lines
3 KiB
Ruby

class Zzuf < Formula
desc "Transparent application input fuzzer"
homepage "http://caca.zoy.org/wiki/zzuf"
sha256 "0842c548522028c3e0d9c9cf7d09f6320b661f33824bb6df19ca209851bdf627"
stable do
url "https://github.com/samhocevar/zzuf/releases/download/v0.14/zzuf-0.14.tar.gz"
sha256 "291b41d53ae6df75d0d2b4a0faa333adfc4a02b9ca8706bee47ef7be657966ce"
# Fix missing semi-colon so compile succeeds
patch do
url "https://github.com/x9prototype/zzuf/pull/1.patch"
sha256 "b312b949ab773ad531880f5f3484e1163910711301f5dba397440f84bffb2ac8"
end
# libasan so just disable it https://github.com/samhocevar/zzuf/issues/5
patch :DATA
end
bottle do
sha256 "a713556c18e8b3415bd4b8ee19e501f7764c15a7fc7c907eefeb09afc582ba5b" => :el_capitan
sha256 "1a392bd97e6aaf5688d675d45f998d2b49a123c38e0bd4a5bee1f274644fc106" => :yosemite
sha256 "a624ccb43655ab0ae5a78721f08a05fb8ffe0d6cecbfae3e07e088cd6a5b8315" => :mavericks
end
head do
url "https://github.com/samhocevar/zzuf.git"
depends_on "autoconf" => :build
depends_on "automake" => :build
depends_on "libtool" => :build
depends_on "pkg-config" => :build
end
conflicts_with "libzzip", :because => "both install `zzcat` binaries"
def install
system "./bootstrap" if build.head?
system "./configure", "--disable-dependency-tracking",
"--prefix=#{prefix}"
system "make", "install"
end
test do
system "#{bin}/zzuf", "hd", "-vn", "32", "/dev/zero"
end
end
__END__
diff --git a/src/libzzuf/sys.c b/src/libzzuf/sys.c
index 93f941e..1cc4109 100644
--- a/src/libzzuf/sys.c
+++ b/src/libzzuf/sys.c
@@ -51,7 +51,7 @@ void *_zz_dl_lib = RTLD_NEXT;
static void insert_funcs(void);
#endif
-#if __GNUC__ || __clang__
+#if HAVE_DLFCN_H && HAVE_DLADDR && !__APPLE__ && (__GNUC__ || __clang__)
extern void __asan_init_v3(void) __attribute__((weak));
#endif
@@ -61,13 +61,13 @@ void _zz_sys_init(void)
insert_funcs();
-#elif defined HAVE_DLFCN_H
+#elif HAVE_DLFCN_H && !__APPLE__
/* If glibc is recent enough, we use dladdr() to get its address. This
* way we are sure that the symbols we load are the most recent version,
* or we may get weird problems. We choose fileno as a random symbol to
* get, because we know we don't divert it. */
-# if __GNUC__ || __clang__
+#if HAVE_DLADDR && (__GNUC__ || __clang__)
/* XXX: for some reason we conflict with libasan. We would like to avoid
* RTLD_NEXT because it causes problems with versioned symbols. However,
* if we do that, libasan enters infinite recursion. So we just disable
diff --git a/test/bug-mmap.c b/test/bug-mmap.c
index af371dc..7e07af0 100644
--- a/test/bug-mmap.c
+++ b/test/bug-mmap.c
@@ -32,7 +32,7 @@
int main(void)
{
-#if defined _SC_PAGE_SIZE
+#if defined _SC_PAGE_SIZE && defined MAP_POPULATE
int fd = open("/etc/hosts", O_RDONLY);
mmap(0, sysconf(_SC_PAGE_SIZE) * 2, PROT_READ,
MAP_PRIVATE | MAP_POPULATE, fd, 0);