less stack mem req

This commit is contained in:
van Hauser
2021-01-23 10:01:09 +01:00
parent a22c8ffdf2
commit 0a3a708f9b
2 changed files with 6 additions and 4 deletions

View File

@ -807,10 +807,10 @@ void perform_dry_run(afl_state_t *afl) {
struct queue_entry *q = afl->queue; struct queue_entry *q = afl->queue;
u32 cal_failures = 0; u32 cal_failures = 0;
u8 * skip_crashes = afl->afl_env.afl_skip_crashes; u8 * skip_crashes = afl->afl_env.afl_skip_crashes;
u8 * use_mem;
while (q) { while (q) {
u8 *use_mem = afl_realloc(AFL_BUF_PARAM(in), MAX_FILE);
u8 res; u8 res;
s32 fd; s32 fd;
@ -829,6 +829,7 @@ void perform_dry_run(afl_state_t *afl) {
if (fd < 0) { PFATAL("Unable to open '%s'", q->fname); } if (fd < 0) { PFATAL("Unable to open '%s'", q->fname); }
u32 read_len = MIN(q->len, (u32)MAX_FILE); u32 read_len = MIN(q->len, (u32)MAX_FILE);
use_mem = afl_realloc(AFL_BUF_PARAM(in), read_len);
if (read(fd, use_mem, read_len) != (ssize_t)read_len) { if (read(fd, use_mem, read_len) != (ssize_t)read_len) {
FATAL("Short read from '%s'", q->fname); FATAL("Short read from '%s'", q->fname);

View File

@ -313,17 +313,18 @@ void mark_as_redundant(afl_state_t *afl, struct queue_entry *q, u8 state) {
/* check if ascii or UTF-8 */ /* check if ascii or UTF-8 */
static u8 check_if_text(struct queue_entry *q) { static u8 check_if_text(afl_state_t *afl, struct queue_entry *q) {
if (q->len < AFL_TXT_MIN_LEN) return 0; if (q->len < AFL_TXT_MIN_LEN) return 0;
u8 buf[MAX_FILE]; u8 *buf;
int fd; int fd;
u32 len = q->len, offset = 0, ascii = 0, utf8 = 0; u32 len = q->len, offset = 0, ascii = 0, utf8 = 0;
ssize_t comp; ssize_t comp;
if (len >= MAX_FILE) len = MAX_FILE - 1; if (len >= MAX_FILE) len = MAX_FILE - 1;
if ((fd = open(q->fname, O_RDONLY)) < 0) return 0; if ((fd = open(q->fname, O_RDONLY)) < 0) return 0;
buf = afl_realloc(AFL_BUF_PARAM(in_scratch), len);
comp = read(fd, buf, len); comp = read(fd, buf, len);
close(fd); close(fd);
if (comp != (ssize_t)len) return 0; if (comp != (ssize_t)len) return 0;
@ -487,7 +488,7 @@ void add_to_queue(afl_state_t *afl, u8 *fname, u32 len, u8 passed_det) {
} }
/* only redqueen currently uses is_ascii */ /* only redqueen currently uses is_ascii */
if (afl->shm.cmplog_mode) q->is_ascii = check_if_text(q); if (afl->shm.cmplog_mode) q->is_ascii = check_if_text(afl, q);
} }