mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-13 02:28:09 +00:00
Merge pull request #2033 from gnbon/stable
Add -l option for adjustable block deletion performance in tmin
This commit is contained in:
@ -82,6 +82,8 @@ static u8 crash_mode, /* Crash-centric mode? */
|
|||||||
remove_shm = 1, /* remove shmem on exit? */
|
remove_shm = 1, /* remove shmem on exit? */
|
||||||
debug; /* debug mode */
|
debug; /* debug mode */
|
||||||
|
|
||||||
|
static u32 del_len_limit = 1; /* Minimum block deletion length */
|
||||||
|
|
||||||
static volatile u8 stop_soon; /* Ctrl-C pressed? */
|
static volatile u8 stop_soon; /* Ctrl-C pressed? */
|
||||||
|
|
||||||
static afl_forkserver_t *fsrv;
|
static afl_forkserver_t *fsrv;
|
||||||
@ -480,7 +482,7 @@ next_del_blksize:
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (del_len > 1 && in_len >= 1) {
|
if (del_len > del_len_limit && in_len >= 1) {
|
||||||
|
|
||||||
del_len /= 2;
|
del_len /= 2;
|
||||||
goto next_del_blksize;
|
goto next_del_blksize;
|
||||||
@ -796,8 +798,9 @@ static void usage(u8 *argv0) {
|
|||||||
"Minimization settings:\n"
|
"Minimization settings:\n"
|
||||||
|
|
||||||
" -e - solve for edge coverage only, ignore hit counts\n"
|
" -e - solve for edge coverage only, ignore hit counts\n"
|
||||||
" -x - treat non-zero exit codes as crashes\n\n"
|
" -l bytes - set minimum block deletion length to speed up minimization\n"
|
||||||
" -H - minimize a hang (hang mode)\n"
|
" -x - treat non-zero exit codes as crashes\n"
|
||||||
|
" -H - minimize a hang (hang mode)\n\n"
|
||||||
|
|
||||||
"For additional tips, please consult %s/README.md.\n\n"
|
"For additional tips, please consult %s/README.md.\n\n"
|
||||||
|
|
||||||
@ -829,8 +832,9 @@ static void usage(u8 *argv0) {
|
|||||||
|
|
||||||
int main(int argc, char **argv_orig, char **envp) {
|
int main(int argc, char **argv_orig, char **envp) {
|
||||||
|
|
||||||
s32 opt;
|
s32 opt;
|
||||||
u8 mem_limit_given = 0, timeout_given = 0, unicorn_mode = 0, use_wine = 0;
|
u8 mem_limit_given = 0, timeout_given = 0, unicorn_mode = 0, use_wine = 0,
|
||||||
|
del_limit_given = 0;
|
||||||
char **use_argv;
|
char **use_argv;
|
||||||
|
|
||||||
char **argv = argv_cpy_dup(argc, argv_orig);
|
char **argv = argv_cpy_dup(argc, argv_orig);
|
||||||
@ -846,7 +850,7 @@ int main(int argc, char **argv_orig, char **envp) {
|
|||||||
|
|
||||||
SAYF(cCYA "afl-tmin" VERSION cRST " by Michal Zalewski\n");
|
SAYF(cCYA "afl-tmin" VERSION cRST " by Michal Zalewski\n");
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "+i:o:f:m:t:B:xeAOQUWXYHh")) > 0) {
|
while ((opt = getopt(argc, argv, "+i:o:f:m:t:l:B:xeAOQUWXYHh")) > 0) {
|
||||||
|
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
|
|
||||||
@ -1055,6 +1059,24 @@ int main(int argc, char **argv_orig, char **envp) {
|
|||||||
read_bitmap(optarg, mask_bitmap, map_size);
|
read_bitmap(optarg, mask_bitmap, map_size);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'l':
|
||||||
|
if (del_limit_given) { FATAL("Multiple -l options not supported"); }
|
||||||
|
del_limit_given = 1;
|
||||||
|
|
||||||
|
if (!optarg) { FATAL("Wrong usage of -l"); }
|
||||||
|
|
||||||
|
if (optarg[0] == '-') { FATAL("Dangerously low value of -l"); }
|
||||||
|
|
||||||
|
del_len_limit = atoi(optarg);
|
||||||
|
|
||||||
|
if (del_len_limit < 1 || del_len_limit > TMIN_MAX_FILE) {
|
||||||
|
|
||||||
|
FATAL("Value of -l out of range between 1 and TMIN_MAX_FILE");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
case 'h':
|
case 'h':
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
return -1;
|
return -1;
|
||||||
|
Reference in New Issue
Block a user