@@ -275,35 +275,62 @@ struct auto_extra_data {
275
275
};
276
276
277
277
/* Fuzzing stages */
278
-
279
278
enum {
280
279
281
- /* 00 */ STAGE_FLIP1 ,
282
- /* 01 */ STAGE_FLIP2 ,
283
- /* 02 */ STAGE_FLIP4 ,
284
- /* 03 */ STAGE_FLIP8 ,
285
- /* 04 */ STAGE_FLIP16 ,
286
- /* 05 */ STAGE_FLIP32 ,
287
- /* 06 */ STAGE_ARITH8 ,
288
- /* 07 */ STAGE_ARITH16 ,
289
- /* 08 */ STAGE_ARITH32 ,
290
- /* 09 */ STAGE_INTEREST8 ,
291
- /* 10 */ STAGE_INTEREST16 ,
292
- /* 11 */ STAGE_INTEREST32 ,
293
- /* 12 */ STAGE_EXTRAS_UO ,
294
- /* 13 */ STAGE_EXTRAS_UI ,
295
- /* 14 */ STAGE_EXTRAS_AO ,
296
- /* 15 */ STAGE_EXTRAS_AI ,
297
- /* 16 */ STAGE_HAVOC ,
298
- /* 17 */ STAGE_SPLICE ,
299
- /* 18 */ STAGE_PYTHON ,
300
- /* 19 */ STAGE_CUSTOM_MUTATOR ,
301
- /* 20 */ STAGE_COLORIZATION ,
302
- /* 21 */ STAGE_ITS ,
303
- /* 22 */ STAGE_INF ,
304
- /* 23 */ STAGE_QUICK ,
305
-
306
- STAGE_NUM_MAX
280
+ /* 00 */ STAGE_FLIPBIT ,
281
+ /* 01 */ STAGE_INTEREST8 ,
282
+ /* 02 */ STAGE_INTEREST16 ,
283
+ /* 03 */ STAGE_INTEREST16BE ,
284
+ /* 04 */ STAGE_INTEREST32 ,
285
+ /* 05 */ STAGE_INTEREST32BE ,
286
+ /* 06 */ STAGE_ARITH8_ ,
287
+ /* 07 */ STAGE_ARITH8 ,
288
+ /* 08 */ STAGE_ARITH16_ ,
289
+ /* 09 */ STAGE_ARITH16BE_ ,
290
+ /* 10 */ STAGE_ARITH16 ,
291
+ /* 11 */ STAGE_ARITH16BE ,
292
+ /* 12 */ STAGE_ARITH32_ ,
293
+ /* 13 */ STAGE_ARITH32BE_ ,
294
+ /* 14 */ STAGE_ARITH32 ,
295
+ /* 15 */ STAGE_ARITH32BE ,
296
+ /* 16 */ STAGE_RAND8 ,
297
+ /* 17 */ STAGE_CLONE_COPY ,
298
+ /* 18 */ STAGE_CLONE_FIXED ,
299
+ /* 19 */ STAGE_OVERWRITE_COPY ,
300
+ /* 20 */ STAGE_OVERWRITE_FIXED ,
301
+ /* 21 */ STAGE_BYTEADD ,
302
+ /* 22 */ STAGE_BYTESUB ,
303
+ /* 23 */ STAGE_FLIP8 ,
304
+ /* 24 */ STAGE_SWITCH ,
305
+ /* 25 */ STAGE_DEL ,
306
+ /* 26 */ STAGE_SHUFFLE ,
307
+ /* 27 */ STAGE_DELONE ,
308
+ /* 28 */ STAGE_INSERTONE ,
309
+ /* 29 */ STAGE_ASCIINUM ,
310
+ /* 30 */ STAGE_INSERTASCIINUM ,
311
+ /* 31 */ STAGE_EXTRA_OVERWRITE ,
312
+ /* 32 */ STAGE_EXTRA_INSERT ,
313
+ /* 33 */ STAGE_AUTO_EXTRA_OVERWRITE ,
314
+ /* 34 */ STAGE_AUTO_EXTRA_INSERT ,
315
+ /* 35 */ STAGE_SPLICE_OVERWRITE ,
316
+ /* 36 */ STAGE_SPLICE_INSERT ,
317
+ // max havoc mutation types
318
+ STAGE_HAVOC_MAX ,
319
+ // other stages
320
+ STAGE_FLIP1 ,
321
+ STAGE_FLIP2 ,
322
+ STAGE_FLIP4 ,
323
+ STAGE_FLIP16 ,
324
+ STAGE_FLIP32 ,
325
+ STAGE_HAVOC ,
326
+ STAGE_SPLICE ,
327
+ STAGE_CUSTOM_MUTATOR ,
328
+ STAGE_PYTHON ,
329
+ STAGE_COLORIZATION ,
330
+ STAGE_ITS ,
331
+ STAGE_INF ,
332
+ STAGE_QUICK ,
333
+ STAGE_MAX
307
334
308
335
};
309
336
@@ -317,23 +344,15 @@ enum {
317
344
318
345
};
319
346
320
- #define OPERATOR_NUM 19
347
+ #define OPERATOR_NUM STAGE_HAVOC_MAX
321
348
#define SWARM_NUM 5
322
349
#define PERIOD_CORE 500000
323
-
350
+ #define PERIOD_PILOT 50000
324
351
#define RAND_C (rand() % 1000 * 0.001)
325
352
#define V_MAX 1
326
353
#define V_MIN 0.05
327
354
#define SPLICE_CYCLES_puppet_up 25
328
355
#define SPLICE_CYCLES_puppet_low 5
329
- #define STAGE_RANDOMBYTE 12
330
- #define STAGE_DELETEBYTE 13
331
- #define STAGE_Clone75 14
332
- #define STAGE_OverWrite75 15
333
- #define STAGE_OverWriteExtra 16
334
- #define STAGE_InsertExtra 17
335
- #define STAGE_Splice 18
336
- #define PERIOD_PILOT 50000
337
356
338
357
enum {
339
358
@@ -681,8 +700,8 @@ typedef struct afl_state {
681
700
682
701
u8 stage_val_type ; /* Value type (STAGE_VAL_*) */
683
702
684
- u64 stage_finds [32 ], /* Patterns found per fuzz stage */
685
- stage_cycles [32 ]; /* Execs per fuzz stage */
703
+ u64 stage_finds [STAGE_MAX ], /* Patterns found per fuzz stage */
704
+ stage_cycles [STAGE_MAX ]; /* Execs per fuzz stage */
686
705
687
706
u32 rand_cnt ; /* Random number counter */
688
707
0 commit comments