89 lines
3 KiB
Ruby
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);
|