aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/afl-common.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/afl-common.c b/src/afl-common.c
index efdb5d60..4250fb36 100644
--- a/src/afl-common.c
+++ b/src/afl-common.c
@@ -51,6 +51,8 @@
#include <fcntl.h>
#include <signal.h>
+#include "hash.h"
+
u8 be_quiet = 0;
u8 *doc_path = "";
u8 last_intr = 0;
@@ -167,6 +169,22 @@ void set_sanitizer_defaults() {
}
+u64 get_binary_hash(u8 *fn) {
+
+ int fd = open(fn, O_RDONLY);
+ if (fd < 0) { PFATAL("Unable to open '%s'", fn); }
+ struct stat st;
+ if (fstat(fd, &st) < 0) { PFATAL("Unable to fstat '%s'", fn); }
+ u32 f_len = st.st_size;
+ u8 *f_data = mmap(0, f_len, PROT_READ, MAP_PRIVATE, fd, 0);
+ if (f_data == MAP_FAILED) { PFATAL("Unable to mmap file '%s'", fn); }
+ close(fd);
+ u64 hash = hash64(f_data, f_len, 0);
+ if (munmap(f_data, f_len)) { PFATAL("unmap() failed"); }
+ return hash;
+
+}
+
u32 check_binary_signatures(u8 *fn) {
int ret = 0, fd = open(fn, O_RDONLY);