1*08b48e0bSAndroid Build Coastguard Worker /* Implementation of afl havoc mutation to be used in AFL++ custom mutators and
2*08b48e0bSAndroid Build Coastguard Worker partially in afl-fuzz itself.
3*08b48e0bSAndroid Build Coastguard Worker
4*08b48e0bSAndroid Build Coastguard Worker How to use:
5*08b48e0bSAndroid Build Coastguard Worker
6*08b48e0bSAndroid Build Coastguard Worker #include "afl-mutations.h" // needs afl-fuzz.h
7*08b48e0bSAndroid Build Coastguard Worker
8*08b48e0bSAndroid Build Coastguard Worker u32 afl_mutate(afl_state_t *afl, u8 *buf, u32 len, u32t steps, bool is_text,
9*08b48e0bSAndroid Build Coastguard Worker bool is_exploration, u8 *splice_buf, u32 splice_len,
10*08b48e0bSAndroid Build Coastguard Worker u32 max_len);
11*08b48e0bSAndroid Build Coastguard Worker
12*08b48e0bSAndroid Build Coastguard Worker Returns:
13*08b48e0bSAndroid Build Coastguard Worker u32 - the length of the mutated data return in *buf. 0 = error
14*08b48e0bSAndroid Build Coastguard Worker Parameters:
15*08b48e0bSAndroid Build Coastguard Worker afl_state_t *afl - the *afl state pointer
16*08b48e0bSAndroid Build Coastguard Worker u8 *buf - the input buffer to mutate which will be mutated into.
17*08b48e0bSAndroid Build Coastguard Worker NOTE: must be able to contain a size of at least max_len!! (see below)
18*08b48e0bSAndroid Build Coastguard Worker u32 len - the length of the input
19*08b48e0bSAndroid Build Coastguard Worker u32 steps - how many mutations to perform on the input
20*08b48e0bSAndroid Build Coastguard Worker bool is_text - is the target expecting text inputs
21*08b48e0bSAndroid Build Coastguard Worker bool is_exploration - mutate for exploration mode (instead of exploitation)
22*08b48e0bSAndroid Build Coastguard Worker splice_buf - a buffer from another corpus item to splice with.
23*08b48e0bSAndroid Build Coastguard Worker If NULL then no splicing is done (obviously).
24*08b48e0bSAndroid Build Coastguard Worker splice_len - the length of the splice buffer. If 0 then no splicing.
25*08b48e0bSAndroid Build Coastguard Worker u32 max_len - the maximum size the mutated buffer may grow to
26*08b48e0bSAndroid Build Coastguard Worker */
27*08b48e0bSAndroid Build Coastguard Worker
28*08b48e0bSAndroid Build Coastguard Worker #ifndef AFL_MUTATIONS_H
29*08b48e0bSAndroid Build Coastguard Worker #define AFL_MUTATIONS_H
30*08b48e0bSAndroid Build Coastguard Worker
31*08b48e0bSAndroid Build Coastguard Worker #include <stdbool.h>
32*08b48e0bSAndroid Build Coastguard Worker #include <inttypes.h>
33*08b48e0bSAndroid Build Coastguard Worker #include "afl-fuzz.h"
34*08b48e0bSAndroid Build Coastguard Worker
35*08b48e0bSAndroid Build Coastguard Worker #define MUT_STRATEGY_ARRAY_SIZE 256
36*08b48e0bSAndroid Build Coastguard Worker
37*08b48e0bSAndroid Build Coastguard Worker enum {
38*08b48e0bSAndroid Build Coastguard Worker
39*08b48e0bSAndroid Build Coastguard Worker /* 00 */ MUT_FLIPBIT,
40*08b48e0bSAndroid Build Coastguard Worker /* 01 */ MUT_INTERESTING8,
41*08b48e0bSAndroid Build Coastguard Worker /* 02 */ MUT_INTERESTING16,
42*08b48e0bSAndroid Build Coastguard Worker /* 03 */ MUT_INTERESTING16BE,
43*08b48e0bSAndroid Build Coastguard Worker /* 04 */ MUT_INTERESTING32,
44*08b48e0bSAndroid Build Coastguard Worker /* 05 */ MUT_INTERESTING32BE,
45*08b48e0bSAndroid Build Coastguard Worker /* 06 */ MUT_ARITH8_,
46*08b48e0bSAndroid Build Coastguard Worker /* 07 */ MUT_ARITH8,
47*08b48e0bSAndroid Build Coastguard Worker /* 08 */ MUT_ARITH16_,
48*08b48e0bSAndroid Build Coastguard Worker /* 09 */ MUT_ARITH16BE_,
49*08b48e0bSAndroid Build Coastguard Worker /* 10 */ MUT_ARITH16,
50*08b48e0bSAndroid Build Coastguard Worker /* 11 */ MUT_ARITH16BE,
51*08b48e0bSAndroid Build Coastguard Worker /* 12 */ MUT_ARITH32_,
52*08b48e0bSAndroid Build Coastguard Worker /* 13 */ MUT_ARITH32BE_,
53*08b48e0bSAndroid Build Coastguard Worker /* 14 */ MUT_ARITH32,
54*08b48e0bSAndroid Build Coastguard Worker /* 15 */ MUT_ARITH32BE,
55*08b48e0bSAndroid Build Coastguard Worker /* 16 */ MUT_RAND8,
56*08b48e0bSAndroid Build Coastguard Worker /* 17 */ MUT_CLONE_COPY,
57*08b48e0bSAndroid Build Coastguard Worker /* 18 */ MUT_CLONE_FIXED,
58*08b48e0bSAndroid Build Coastguard Worker /* 19 */ MUT_OVERWRITE_COPY,
59*08b48e0bSAndroid Build Coastguard Worker /* 20 */ MUT_OVERWRITE_FIXED,
60*08b48e0bSAndroid Build Coastguard Worker /* 21 */ MUT_BYTEADD,
61*08b48e0bSAndroid Build Coastguard Worker /* 22 */ MUT_BYTESUB,
62*08b48e0bSAndroid Build Coastguard Worker /* 23 */ MUT_FLIP8,
63*08b48e0bSAndroid Build Coastguard Worker /* 24 */ MUT_SWITCH,
64*08b48e0bSAndroid Build Coastguard Worker /* 25 */ MUT_DEL,
65*08b48e0bSAndroid Build Coastguard Worker /* 26 */ MUT_SHUFFLE,
66*08b48e0bSAndroid Build Coastguard Worker /* 27 */ MUT_DELONE,
67*08b48e0bSAndroid Build Coastguard Worker /* 28 */ MUT_INSERTONE,
68*08b48e0bSAndroid Build Coastguard Worker /* 29 */ MUT_ASCIINUM,
69*08b48e0bSAndroid Build Coastguard Worker /* 30 */ MUT_INSERTASCIINUM,
70*08b48e0bSAndroid Build Coastguard Worker /* 31 */ MUT_EXTRA_OVERWRITE,
71*08b48e0bSAndroid Build Coastguard Worker /* 32 */ MUT_EXTRA_INSERT,
72*08b48e0bSAndroid Build Coastguard Worker /* 33 */ MUT_AUTO_EXTRA_OVERWRITE,
73*08b48e0bSAndroid Build Coastguard Worker /* 34 */ MUT_AUTO_EXTRA_INSERT,
74*08b48e0bSAndroid Build Coastguard Worker /* 35 */ MUT_SPLICE_OVERWRITE,
75*08b48e0bSAndroid Build Coastguard Worker /* 36 */ MUT_SPLICE_INSERT,
76*08b48e0bSAndroid Build Coastguard Worker
77*08b48e0bSAndroid Build Coastguard Worker MUT_MAX
78*08b48e0bSAndroid Build Coastguard Worker
79*08b48e0bSAndroid Build Coastguard Worker };
80*08b48e0bSAndroid Build Coastguard Worker
81*08b48e0bSAndroid Build Coastguard Worker #define MUT_TXT_ARRAY_SIZE 200
82*08b48e0bSAndroid Build Coastguard Worker u32 text_array[MUT_TXT_ARRAY_SIZE] = {MUT_FLIPBIT,
83*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
84*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
85*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
86*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
87*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
88*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
89*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
90*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
91*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
92*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
93*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
94*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
95*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
96*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
97*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
98*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
99*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
100*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
101*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
102*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
103*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
104*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
105*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
106*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
107*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
108*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
109*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
110*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
111*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
112*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
113*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
114*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
115*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
116*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
117*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
118*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
119*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
120*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
121*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
122*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
123*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
124*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
125*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
126*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
127*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
128*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
129*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
130*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
131*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
132*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
133*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
134*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
135*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
136*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
137*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
138*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
139*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
140*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
141*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
142*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
143*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
144*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
145*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
146*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
147*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
148*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
149*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
150*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
151*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
152*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
153*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
154*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
155*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
156*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
157*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
158*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
159*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
160*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
161*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
162*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
163*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
164*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
165*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
166*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
167*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
168*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
169*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
170*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
171*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
172*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
173*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
174*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
175*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
176*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
177*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
178*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
179*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
180*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
181*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
182*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
183*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
184*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
185*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
186*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
187*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
188*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
189*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
190*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
191*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
192*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
193*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
194*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
195*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
196*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
197*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
198*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
199*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
200*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
201*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
202*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
203*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
204*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
205*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
206*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
207*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
208*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
209*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
210*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
211*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
212*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
213*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
214*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
215*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
216*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
217*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
218*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
219*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
220*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
221*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
222*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
223*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
224*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
225*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
226*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
227*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
228*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
229*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
230*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
231*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
232*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
233*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
234*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
235*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
236*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
237*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
238*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
239*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
240*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
241*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
242*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
243*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
244*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
245*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
246*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
247*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
248*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
249*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
250*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
251*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
252*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
253*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
254*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
255*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
256*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
257*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
258*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
259*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
260*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
261*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
262*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
263*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
264*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
265*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
266*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
267*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
268*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
269*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
270*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
271*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
272*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
273*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
274*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
275*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
276*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
277*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
278*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
279*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
280*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
281*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT};
282*08b48e0bSAndroid Build Coastguard Worker
283*08b48e0bSAndroid Build Coastguard Worker #define MUT_BIN_ARRAY_SIZE 256
284*08b48e0bSAndroid Build Coastguard Worker u32 binary_array[MUT_BIN_ARRAY_SIZE] = {MUT_FLIPBIT,
285*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
286*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
287*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
288*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
289*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
290*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
291*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
292*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
293*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
294*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
295*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
296*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
297*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
298*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
299*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
300*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
301*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
302*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
303*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
304*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
305*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
306*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
307*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
308*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
309*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
310*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
311*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
312*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
313*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
314*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
315*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
316*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
317*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
318*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
319*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
320*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
321*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
322*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
323*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
324*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
325*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
326*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
327*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
328*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
329*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
330*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
331*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
332*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
333*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
334*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
335*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
336*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
337*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
338*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
339*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
340*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
341*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
342*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
343*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
344*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
345*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
346*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
347*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
348*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
349*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
350*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
351*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
352*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
353*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
354*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
355*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
356*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
357*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
358*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
359*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
360*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
361*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
362*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
363*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
364*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
365*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
366*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
367*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
368*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
369*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
370*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
371*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
372*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
373*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
374*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
375*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
376*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
377*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
378*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
379*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
380*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
381*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
382*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
383*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
384*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
385*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
386*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
387*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
388*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
389*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
390*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
391*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
392*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
393*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
394*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
395*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
396*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
397*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
398*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
399*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
400*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
401*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
402*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
403*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
404*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
405*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
406*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
407*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
408*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
409*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
410*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
411*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
412*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
413*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
414*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
415*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
416*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
417*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
418*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
419*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
420*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
421*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
422*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
423*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
424*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
425*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
426*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
427*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
428*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
429*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
430*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
431*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
432*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
433*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
434*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
435*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
436*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
437*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
438*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
439*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
440*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
441*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
442*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
443*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
444*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
445*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
446*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
447*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
448*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
449*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
450*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
451*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
452*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
453*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
454*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
455*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
456*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
457*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
458*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
459*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
460*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
461*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
462*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
463*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
464*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
465*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
466*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
467*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
468*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
469*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
470*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
471*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
472*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
473*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
474*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
475*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
476*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
477*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
478*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
479*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
480*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
481*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
482*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
483*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
484*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
485*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
486*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
487*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
488*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
489*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
490*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
491*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
492*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
493*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
494*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
495*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
496*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
497*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
498*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
499*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
500*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
501*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
502*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
503*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
504*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
505*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
506*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
507*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
508*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
509*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
510*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
511*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
512*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
513*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
514*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
515*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
516*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
517*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
518*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
519*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
520*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
521*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
522*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
523*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
524*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
525*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
526*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
527*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
528*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
529*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
530*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
531*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
532*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
533*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
534*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
535*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
536*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
537*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
538*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
539*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT};
540*08b48e0bSAndroid Build Coastguard Worker
541*08b48e0bSAndroid Build Coastguard Worker #define MUT_NORMAL_ARRAY_SIZE 77
542*08b48e0bSAndroid Build Coastguard Worker u32 normal_splice_array[MUT_NORMAL_ARRAY_SIZE] = {MUT_FLIPBIT,
543*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
544*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
545*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
546*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
547*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
548*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
549*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
550*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
551*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
552*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
553*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
554*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
555*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
556*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
557*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
558*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
559*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
560*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
561*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
562*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
563*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
564*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
565*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
566*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
567*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
568*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
569*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
570*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
571*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
572*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
573*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
574*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
575*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
576*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
577*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
578*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
579*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
580*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
581*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
582*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
583*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
584*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
585*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
586*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
587*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
588*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
589*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
590*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
591*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
592*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
593*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
594*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
595*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
596*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
597*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
598*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
599*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
600*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
601*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
602*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
603*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
604*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
605*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
606*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
607*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
608*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
609*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
610*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
611*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
612*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
613*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
614*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
615*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
616*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
617*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
618*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT};
619*08b48e0bSAndroid Build Coastguard Worker
620*08b48e0bSAndroid Build Coastguard Worker #define MUT_SPLICE_ARRAY_SIZE 81
621*08b48e0bSAndroid Build Coastguard Worker u32 full_splice_array[MUT_SPLICE_ARRAY_SIZE] = {MUT_FLIPBIT,
622*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
623*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
624*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
625*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
626*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
627*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
628*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
629*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
630*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
631*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
632*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
633*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
634*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
635*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
636*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
637*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
638*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
639*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
640*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
641*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
642*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
643*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
644*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
645*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
646*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
647*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
648*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
649*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
650*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
651*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
652*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
653*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
654*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
655*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
656*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
657*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
658*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
659*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
660*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
661*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
662*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
663*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
664*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
665*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
666*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
667*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
668*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
669*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
670*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
671*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
672*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
673*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
674*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
675*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
676*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
677*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
678*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
679*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
680*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
681*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
682*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
683*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
684*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
685*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
686*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
687*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
688*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
689*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
690*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
691*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
692*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
693*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
694*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
695*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
696*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
697*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
698*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
699*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
700*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
701*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT};
702*08b48e0bSAndroid Build Coastguard Worker
703*08b48e0bSAndroid Build Coastguard Worker u32 mutation_strategy_exploration_text[MUT_STRATEGY_ARRAY_SIZE] = {
704*08b48e0bSAndroid Build Coastguard Worker
705*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
706*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
707*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
708*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
709*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
710*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
711*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
712*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
713*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
714*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
715*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
716*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
717*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
718*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
719*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
720*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
721*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
722*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
723*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
724*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
725*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
726*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
727*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
728*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
729*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
730*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
731*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
732*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
733*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
734*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
735*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
736*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
737*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
738*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
739*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
740*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
741*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
742*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
743*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
744*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
745*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
746*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
747*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
748*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
749*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
750*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
751*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
752*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
753*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
754*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
755*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
756*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
757*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
758*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
759*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
760*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
761*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
762*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
763*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
764*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
765*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
766*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
767*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
768*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
769*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
770*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
771*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
772*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
773*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
774*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
775*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
776*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
777*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
778*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
779*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
780*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
781*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
782*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
783*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
784*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
785*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
786*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
787*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
788*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
789*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
790*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
791*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
792*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
793*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
794*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
795*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
796*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
797*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
798*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
799*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
800*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
801*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
802*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
803*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
804*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
805*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
806*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
807*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
808*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
809*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
810*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
811*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
812*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
813*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
814*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
815*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
816*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
817*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
818*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
819*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
820*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
821*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
822*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
823*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
824*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
825*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
826*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
827*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
828*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
829*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
830*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
831*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
832*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
833*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
834*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
835*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
836*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
837*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
838*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
839*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
840*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
841*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
842*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
843*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
844*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
845*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
846*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
847*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
848*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
849*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
850*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
851*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
852*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
853*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
854*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
855*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
856*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
857*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
858*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
859*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
860*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
861*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
862*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
863*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
864*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
865*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
866*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
867*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
868*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
869*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
870*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
871*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
872*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
873*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
874*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
875*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
876*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
877*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
878*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
879*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
880*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
881*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
882*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
883*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
884*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
885*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
886*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
887*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
888*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
889*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
890*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
891*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
892*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
893*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
894*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
895*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
896*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
897*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
898*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
899*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
900*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
901*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
902*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
903*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
904*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
905*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
906*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
907*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
908*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
909*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
910*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
911*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
912*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
913*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
914*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
915*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
916*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
917*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
918*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
919*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
920*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
921*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
922*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
923*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
924*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
925*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
926*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
927*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
928*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
929*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
930*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
931*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
932*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
933*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
934*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
935*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
936*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
937*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
938*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
939*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
940*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
941*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
942*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
943*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
944*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
945*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
946*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
947*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
948*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
949*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
950*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
951*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
952*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
953*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
954*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
955*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
956*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
957*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
958*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
959*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
960*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT
961*08b48e0bSAndroid Build Coastguard Worker
962*08b48e0bSAndroid Build Coastguard Worker };
963*08b48e0bSAndroid Build Coastguard Worker
964*08b48e0bSAndroid Build Coastguard Worker u32 mutation_strategy_exploration_binary[MUT_STRATEGY_ARRAY_SIZE] = {
965*08b48e0bSAndroid Build Coastguard Worker
966*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
967*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
968*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
969*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
970*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
971*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
972*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
973*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
974*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
975*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
976*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
977*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
978*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
979*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
980*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
981*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
982*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
983*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
984*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
985*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
986*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
987*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
988*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
989*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
990*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
991*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
992*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
993*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
994*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
995*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
996*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
997*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
998*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
999*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1000*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1001*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1002*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1003*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1004*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1005*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1006*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1007*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1008*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1009*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1010*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1011*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1012*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1013*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1014*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1015*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1016*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1017*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1018*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1019*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1020*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1021*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1022*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1023*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1024*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1025*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1026*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1027*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1028*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1029*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1030*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1031*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1032*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1033*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1034*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1035*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1036*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1037*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1038*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1039*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1040*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1041*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1042*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1043*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1044*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1045*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1046*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1047*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1048*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1049*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1050*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1051*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1052*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1053*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1054*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1055*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1056*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1057*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1058*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1059*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1060*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1061*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1062*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1063*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1064*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1065*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1066*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1067*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1068*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1069*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1070*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1071*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1072*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1073*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1074*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1075*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1076*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1077*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1078*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1079*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1080*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1081*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1082*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1083*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1084*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1085*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1086*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1087*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1088*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1089*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1090*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1091*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1092*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1093*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1094*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1095*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1096*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1097*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1098*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1099*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1100*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1101*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1102*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1103*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1104*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1105*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1106*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1107*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1108*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1109*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1110*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1111*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1112*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1113*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1114*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1115*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1116*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1117*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1118*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1119*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1120*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1121*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1122*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1123*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1124*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1125*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1126*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1127*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1128*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1129*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1130*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1131*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1132*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1133*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1134*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1135*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1136*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1137*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1138*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1139*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1140*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1141*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1142*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1143*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1144*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1145*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1146*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1147*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1148*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1149*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1150*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1151*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1152*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1153*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1154*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1155*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1156*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1157*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1158*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1159*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1160*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1161*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1162*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1163*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1164*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1165*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1166*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1167*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1168*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1169*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1170*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1171*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1172*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1173*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1174*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1175*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1176*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1177*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1178*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1179*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1180*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1181*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1182*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1183*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1184*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1185*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1186*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1187*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1188*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1189*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1190*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1191*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1192*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1193*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1194*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1195*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1196*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1197*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1198*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1199*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1200*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1201*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1202*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1203*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1204*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1205*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1206*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1207*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1208*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1209*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1210*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1211*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1212*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1213*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1214*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1215*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1216*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1217*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1218*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1219*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1220*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1221*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT
1222*08b48e0bSAndroid Build Coastguard Worker
1223*08b48e0bSAndroid Build Coastguard Worker };
1224*08b48e0bSAndroid Build Coastguard Worker
1225*08b48e0bSAndroid Build Coastguard Worker u32 mutation_strategy_exploitation_text[MUT_STRATEGY_ARRAY_SIZE] = {
1226*08b48e0bSAndroid Build Coastguard Worker
1227*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1228*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1229*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1230*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1231*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1232*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1233*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1234*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1235*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1236*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1237*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1238*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1239*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1240*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1241*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1242*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1243*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1244*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1245*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1246*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1247*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1248*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1249*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1250*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1251*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1252*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1253*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1254*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1255*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1256*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1257*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1258*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1259*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1260*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1261*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1262*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1263*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1264*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1265*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1266*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1267*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1268*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1269*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1270*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1271*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1272*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1273*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1274*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1275*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1276*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1277*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1278*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1279*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1280*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1281*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1282*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1283*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1284*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1285*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1286*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1287*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1288*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1289*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1290*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1291*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1292*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1293*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1294*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1295*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1296*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1297*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1298*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1299*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1300*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1301*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1302*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1303*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1304*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1305*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1306*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1307*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1308*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1309*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1310*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1311*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1312*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1313*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1314*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1315*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1316*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1317*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1318*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1319*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1320*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1321*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1322*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1323*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1324*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1325*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1326*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1327*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1328*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1329*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1330*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1331*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1332*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1333*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1334*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1335*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1336*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1337*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1338*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1339*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1340*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1341*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1342*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1343*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1344*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1345*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1346*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1347*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1348*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1349*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1350*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1351*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1352*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1353*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1354*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1355*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1356*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1357*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1358*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1359*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1360*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1361*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1362*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1363*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1364*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1365*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1366*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1367*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1368*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1369*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1370*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1371*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1372*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1373*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1374*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1375*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1376*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1377*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1378*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1379*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1380*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1381*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1382*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1383*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1384*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1385*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1386*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1387*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1388*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1389*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1390*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1391*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1392*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1393*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1394*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1395*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1396*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1397*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1398*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1399*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1400*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1401*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1402*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1403*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1404*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1405*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1406*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1407*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1408*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1409*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1410*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1411*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1412*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1413*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1414*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1415*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1416*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1417*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1418*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1419*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1420*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1421*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1422*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1423*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1424*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1425*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1426*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1427*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1428*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1429*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1430*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1431*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1432*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1433*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1434*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1435*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1436*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1437*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1438*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1439*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1440*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1441*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1442*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1443*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1444*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1445*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1446*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1447*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1448*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1449*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1450*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1451*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1452*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1453*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1454*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1455*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1456*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1457*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1458*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1459*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1460*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1461*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1462*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1463*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1464*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1465*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1466*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1467*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1468*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1469*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1470*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1471*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1472*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1473*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1474*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1475*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1476*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1477*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1478*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1479*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1480*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1481*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1482*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT
1483*08b48e0bSAndroid Build Coastguard Worker
1484*08b48e0bSAndroid Build Coastguard Worker };
1485*08b48e0bSAndroid Build Coastguard Worker
1486*08b48e0bSAndroid Build Coastguard Worker u32 mutation_strategy_exploitation_binary[MUT_STRATEGY_ARRAY_SIZE] = {
1487*08b48e0bSAndroid Build Coastguard Worker
1488*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1489*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1490*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1491*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1492*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1493*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1494*08b48e0bSAndroid Build Coastguard Worker MUT_FLIPBIT,
1495*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1496*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1497*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1498*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1499*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1500*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1501*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING8,
1502*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1503*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1504*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1505*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1506*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1507*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1508*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16,
1509*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1510*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1511*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1512*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1513*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1514*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1515*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING16BE,
1516*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1517*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1518*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1519*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1520*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1521*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1522*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1523*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32,
1524*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1525*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1526*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1527*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1528*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1529*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1530*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1531*08b48e0bSAndroid Build Coastguard Worker MUT_INTERESTING32BE,
1532*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1533*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1534*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1535*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1536*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1537*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8_,
1538*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1539*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1540*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1541*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1542*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1543*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1544*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH8,
1545*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1546*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1547*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1548*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1549*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1550*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16_,
1551*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1552*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1553*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1554*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1555*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1556*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1557*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE_,
1558*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1559*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1560*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1561*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1562*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1563*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1564*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16,
1565*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1566*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1567*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1568*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1569*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1570*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1571*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH16BE,
1572*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1573*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1574*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1575*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1576*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1577*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32_,
1578*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1579*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1580*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1581*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1582*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1583*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1584*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE_,
1585*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1586*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1587*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1588*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1589*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1590*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1591*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32,
1592*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1593*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1594*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1595*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1596*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1597*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1598*08b48e0bSAndroid Build Coastguard Worker MUT_ARITH32BE,
1599*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1600*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1601*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1602*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1603*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1604*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1605*08b48e0bSAndroid Build Coastguard Worker MUT_RAND8,
1606*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1607*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1608*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1609*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1610*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1611*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1612*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1613*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1614*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_COPY,
1615*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1616*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1617*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1618*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1619*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1620*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1621*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1622*08b48e0bSAndroid Build Coastguard Worker MUT_CLONE_FIXED,
1623*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1624*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1625*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1626*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1627*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1628*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_COPY,
1629*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1630*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1631*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1632*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1633*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1634*08b48e0bSAndroid Build Coastguard Worker MUT_OVERWRITE_FIXED,
1635*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1636*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1637*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1638*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1639*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1640*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1641*08b48e0bSAndroid Build Coastguard Worker MUT_BYTEADD,
1642*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1643*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1644*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1645*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1646*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1647*08b48e0bSAndroid Build Coastguard Worker MUT_BYTESUB,
1648*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1649*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1650*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1651*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1652*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1653*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1654*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1655*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1656*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1657*08b48e0bSAndroid Build Coastguard Worker MUT_FLIP8,
1658*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1659*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1660*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1661*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1662*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1663*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1664*08b48e0bSAndroid Build Coastguard Worker MUT_SWITCH,
1665*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1666*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1667*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1668*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1669*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1670*08b48e0bSAndroid Build Coastguard Worker MUT_DEL,
1671*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1672*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1673*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1674*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1675*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1676*08b48e0bSAndroid Build Coastguard Worker MUT_SHUFFLE,
1677*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1678*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1679*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1680*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1681*08b48e0bSAndroid Build Coastguard Worker MUT_DELONE,
1682*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1683*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1684*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1685*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1686*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1687*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTONE,
1688*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1689*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1690*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1691*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1692*08b48e0bSAndroid Build Coastguard Worker MUT_ASCIINUM,
1693*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1694*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1695*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1696*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1697*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1698*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1699*08b48e0bSAndroid Build Coastguard Worker MUT_INSERTASCIINUM,
1700*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1701*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1702*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1703*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1704*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1705*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1706*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_OVERWRITE,
1707*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1708*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1709*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1710*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1711*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1712*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1713*08b48e0bSAndroid Build Coastguard Worker MUT_EXTRA_INSERT,
1714*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1715*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1716*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1717*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1718*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1719*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1720*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_OVERWRITE,
1721*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1722*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1723*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1724*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1725*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1726*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1727*08b48e0bSAndroid Build Coastguard Worker MUT_AUTO_EXTRA_INSERT,
1728*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1729*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1730*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1731*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1732*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1733*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1734*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_OVERWRITE,
1735*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1736*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1737*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1738*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1739*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1740*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1741*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1742*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT,
1743*08b48e0bSAndroid Build Coastguard Worker MUT_SPLICE_INSERT
1744*08b48e0bSAndroid Build Coastguard Worker
1745*08b48e0bSAndroid Build Coastguard Worker };
1746*08b48e0bSAndroid Build Coastguard Worker
1747*08b48e0bSAndroid Build Coastguard Worker u32 afl_mutate(afl_state_t *, u8 *, u32, u32, bool, bool, u8 *, u32, u32);
1748*08b48e0bSAndroid Build Coastguard Worker u32 choose_block_len(afl_state_t *, u32);
1749*08b48e0bSAndroid Build Coastguard Worker
1750*08b48e0bSAndroid Build Coastguard Worker /* Helper to choose random block len for block operations in fuzz_one().
1751*08b48e0bSAndroid Build Coastguard Worker Doesn't return zero, provided that max_len is > 0. */
1752*08b48e0bSAndroid Build Coastguard Worker
choose_block_len(afl_state_t * afl,u32 limit)1753*08b48e0bSAndroid Build Coastguard Worker inline u32 choose_block_len(afl_state_t *afl, u32 limit) {
1754*08b48e0bSAndroid Build Coastguard Worker
1755*08b48e0bSAndroid Build Coastguard Worker u32 min_value, max_value;
1756*08b48e0bSAndroid Build Coastguard Worker u32 rlim = MIN(afl->queue_cycle, (u32)3);
1757*08b48e0bSAndroid Build Coastguard Worker
1758*08b48e0bSAndroid Build Coastguard Worker if (unlikely(!afl->run_over10m)) { rlim = 1; }
1759*08b48e0bSAndroid Build Coastguard Worker
1760*08b48e0bSAndroid Build Coastguard Worker switch (rand_below(afl, rlim)) {
1761*08b48e0bSAndroid Build Coastguard Worker
1762*08b48e0bSAndroid Build Coastguard Worker case 0:
1763*08b48e0bSAndroid Build Coastguard Worker min_value = 1;
1764*08b48e0bSAndroid Build Coastguard Worker max_value = HAVOC_BLK_SMALL;
1765*08b48e0bSAndroid Build Coastguard Worker break;
1766*08b48e0bSAndroid Build Coastguard Worker
1767*08b48e0bSAndroid Build Coastguard Worker case 1:
1768*08b48e0bSAndroid Build Coastguard Worker min_value = HAVOC_BLK_SMALL;
1769*08b48e0bSAndroid Build Coastguard Worker max_value = HAVOC_BLK_MEDIUM;
1770*08b48e0bSAndroid Build Coastguard Worker break;
1771*08b48e0bSAndroid Build Coastguard Worker
1772*08b48e0bSAndroid Build Coastguard Worker default:
1773*08b48e0bSAndroid Build Coastguard Worker
1774*08b48e0bSAndroid Build Coastguard Worker if (likely(rand_below(afl, 10))) {
1775*08b48e0bSAndroid Build Coastguard Worker
1776*08b48e0bSAndroid Build Coastguard Worker min_value = HAVOC_BLK_MEDIUM;
1777*08b48e0bSAndroid Build Coastguard Worker max_value = HAVOC_BLK_LARGE;
1778*08b48e0bSAndroid Build Coastguard Worker
1779*08b48e0bSAndroid Build Coastguard Worker } else {
1780*08b48e0bSAndroid Build Coastguard Worker
1781*08b48e0bSAndroid Build Coastguard Worker min_value = HAVOC_BLK_LARGE;
1782*08b48e0bSAndroid Build Coastguard Worker max_value = HAVOC_BLK_XL;
1783*08b48e0bSAndroid Build Coastguard Worker
1784*08b48e0bSAndroid Build Coastguard Worker }
1785*08b48e0bSAndroid Build Coastguard Worker
1786*08b48e0bSAndroid Build Coastguard Worker }
1787*08b48e0bSAndroid Build Coastguard Worker
1788*08b48e0bSAndroid Build Coastguard Worker if (min_value >= limit) { min_value = 1; }
1789*08b48e0bSAndroid Build Coastguard Worker
1790*08b48e0bSAndroid Build Coastguard Worker return min_value + rand_below(afl, MIN(max_value, limit) - min_value + 1);
1791*08b48e0bSAndroid Build Coastguard Worker
1792*08b48e0bSAndroid Build Coastguard Worker }
1793*08b48e0bSAndroid Build Coastguard Worker
afl_mutate(afl_state_t * afl,u8 * buf,u32 len,u32 steps,bool is_text,bool is_exploration,u8 * splice_buf,u32 splice_len,u32 max_len)1794*08b48e0bSAndroid Build Coastguard Worker inline u32 afl_mutate(afl_state_t *afl, u8 *buf, u32 len, u32 steps,
1795*08b48e0bSAndroid Build Coastguard Worker bool is_text, bool is_exploration, u8 *splice_buf,
1796*08b48e0bSAndroid Build Coastguard Worker u32 splice_len, u32 max_len) {
1797*08b48e0bSAndroid Build Coastguard Worker
1798*08b48e0bSAndroid Build Coastguard Worker if (!buf || !len) { return 0; }
1799*08b48e0bSAndroid Build Coastguard Worker
1800*08b48e0bSAndroid Build Coastguard Worker u32 *mutation_array;
1801*08b48e0bSAndroid Build Coastguard Worker static u8 *tmp_buf = NULL;
1802*08b48e0bSAndroid Build Coastguard Worker static u32 tmp_buf_size = 0;
1803*08b48e0bSAndroid Build Coastguard Worker
1804*08b48e0bSAndroid Build Coastguard Worker if (max_len > tmp_buf_size) {
1805*08b48e0bSAndroid Build Coastguard Worker
1806*08b48e0bSAndroid Build Coastguard Worker if (tmp_buf) {
1807*08b48e0bSAndroid Build Coastguard Worker
1808*08b48e0bSAndroid Build Coastguard Worker u8 *ptr = realloc(tmp_buf, max_len);
1809*08b48e0bSAndroid Build Coastguard Worker
1810*08b48e0bSAndroid Build Coastguard Worker if (!ptr) {
1811*08b48e0bSAndroid Build Coastguard Worker
1812*08b48e0bSAndroid Build Coastguard Worker return 0;
1813*08b48e0bSAndroid Build Coastguard Worker
1814*08b48e0bSAndroid Build Coastguard Worker } else {
1815*08b48e0bSAndroid Build Coastguard Worker
1816*08b48e0bSAndroid Build Coastguard Worker tmp_buf = ptr;
1817*08b48e0bSAndroid Build Coastguard Worker
1818*08b48e0bSAndroid Build Coastguard Worker }
1819*08b48e0bSAndroid Build Coastguard Worker
1820*08b48e0bSAndroid Build Coastguard Worker } else {
1821*08b48e0bSAndroid Build Coastguard Worker
1822*08b48e0bSAndroid Build Coastguard Worker if ((tmp_buf = malloc(max_len)) == NULL) { return 0; }
1823*08b48e0bSAndroid Build Coastguard Worker
1824*08b48e0bSAndroid Build Coastguard Worker }
1825*08b48e0bSAndroid Build Coastguard Worker
1826*08b48e0bSAndroid Build Coastguard Worker tmp_buf_size = max_len;
1827*08b48e0bSAndroid Build Coastguard Worker
1828*08b48e0bSAndroid Build Coastguard Worker }
1829*08b48e0bSAndroid Build Coastguard Worker
1830*08b48e0bSAndroid Build Coastguard Worker if (is_text) {
1831*08b48e0bSAndroid Build Coastguard Worker
1832*08b48e0bSAndroid Build Coastguard Worker if (is_exploration) {
1833*08b48e0bSAndroid Build Coastguard Worker
1834*08b48e0bSAndroid Build Coastguard Worker mutation_array = (u32 *)&mutation_strategy_exploration_text;
1835*08b48e0bSAndroid Build Coastguard Worker
1836*08b48e0bSAndroid Build Coastguard Worker } else {
1837*08b48e0bSAndroid Build Coastguard Worker
1838*08b48e0bSAndroid Build Coastguard Worker mutation_array = (u32 *)&mutation_strategy_exploitation_text;
1839*08b48e0bSAndroid Build Coastguard Worker
1840*08b48e0bSAndroid Build Coastguard Worker }
1841*08b48e0bSAndroid Build Coastguard Worker
1842*08b48e0bSAndroid Build Coastguard Worker } else {
1843*08b48e0bSAndroid Build Coastguard Worker
1844*08b48e0bSAndroid Build Coastguard Worker if (is_exploration) {
1845*08b48e0bSAndroid Build Coastguard Worker
1846*08b48e0bSAndroid Build Coastguard Worker mutation_array = (u32 *)&mutation_strategy_exploration_binary;
1847*08b48e0bSAndroid Build Coastguard Worker
1848*08b48e0bSAndroid Build Coastguard Worker } else {
1849*08b48e0bSAndroid Build Coastguard Worker
1850*08b48e0bSAndroid Build Coastguard Worker mutation_array = (u32 *)&mutation_strategy_exploitation_binary;
1851*08b48e0bSAndroid Build Coastguard Worker
1852*08b48e0bSAndroid Build Coastguard Worker }
1853*08b48e0bSAndroid Build Coastguard Worker
1854*08b48e0bSAndroid Build Coastguard Worker }
1855*08b48e0bSAndroid Build Coastguard Worker
1856*08b48e0bSAndroid Build Coastguard Worker for (u32 step = 0; step < steps; ++step) {
1857*08b48e0bSAndroid Build Coastguard Worker
1858*08b48e0bSAndroid Build Coastguard Worker retry_havoc_step: {
1859*08b48e0bSAndroid Build Coastguard Worker
1860*08b48e0bSAndroid Build Coastguard Worker u32 r = rand_below(afl, MUT_STRATEGY_ARRAY_SIZE), item;
1861*08b48e0bSAndroid Build Coastguard Worker
1862*08b48e0bSAndroid Build Coastguard Worker switch (mutation_array[r]) {
1863*08b48e0bSAndroid Build Coastguard Worker
1864*08b48e0bSAndroid Build Coastguard Worker case MUT_FLIPBIT: {
1865*08b48e0bSAndroid Build Coastguard Worker
1866*08b48e0bSAndroid Build Coastguard Worker /* Flip a single bit somewhere. Spooky! */
1867*08b48e0bSAndroid Build Coastguard Worker u8 bit = rand_below(afl, 8);
1868*08b48e0bSAndroid Build Coastguard Worker u32 off = rand_below(afl, len);
1869*08b48e0bSAndroid Build Coastguard Worker buf[off] ^= 1 << bit;
1870*08b48e0bSAndroid Build Coastguard Worker
1871*08b48e0bSAndroid Build Coastguard Worker break;
1872*08b48e0bSAndroid Build Coastguard Worker
1873*08b48e0bSAndroid Build Coastguard Worker }
1874*08b48e0bSAndroid Build Coastguard Worker
1875*08b48e0bSAndroid Build Coastguard Worker case MUT_INTERESTING8: {
1876*08b48e0bSAndroid Build Coastguard Worker
1877*08b48e0bSAndroid Build Coastguard Worker /* Set byte to interesting value. */
1878*08b48e0bSAndroid Build Coastguard Worker
1879*08b48e0bSAndroid Build Coastguard Worker item = rand_below(afl, sizeof(interesting_8));
1880*08b48e0bSAndroid Build Coastguard Worker buf[rand_below(afl, len)] = interesting_8[item];
1881*08b48e0bSAndroid Build Coastguard Worker break;
1882*08b48e0bSAndroid Build Coastguard Worker
1883*08b48e0bSAndroid Build Coastguard Worker }
1884*08b48e0bSAndroid Build Coastguard Worker
1885*08b48e0bSAndroid Build Coastguard Worker case MUT_INTERESTING16: {
1886*08b48e0bSAndroid Build Coastguard Worker
1887*08b48e0bSAndroid Build Coastguard Worker /* Set word to interesting value, little endian. */
1888*08b48e0bSAndroid Build Coastguard Worker
1889*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 2)) { break; } // no retry
1890*08b48e0bSAndroid Build Coastguard Worker
1891*08b48e0bSAndroid Build Coastguard Worker item = rand_below(afl, sizeof(interesting_16) >> 1);
1892*08b48e0bSAndroid Build Coastguard Worker *(u16 *)(buf + rand_below(afl, len - 1)) = interesting_16[item];
1893*08b48e0bSAndroid Build Coastguard Worker
1894*08b48e0bSAndroid Build Coastguard Worker break;
1895*08b48e0bSAndroid Build Coastguard Worker
1896*08b48e0bSAndroid Build Coastguard Worker }
1897*08b48e0bSAndroid Build Coastguard Worker
1898*08b48e0bSAndroid Build Coastguard Worker case MUT_INTERESTING16BE: {
1899*08b48e0bSAndroid Build Coastguard Worker
1900*08b48e0bSAndroid Build Coastguard Worker /* Set word to interesting value, big endian. */
1901*08b48e0bSAndroid Build Coastguard Worker
1902*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 2)) { break; } // no retry
1903*08b48e0bSAndroid Build Coastguard Worker
1904*08b48e0bSAndroid Build Coastguard Worker item = rand_below(afl, sizeof(interesting_16) >> 1);
1905*08b48e0bSAndroid Build Coastguard Worker *(u16 *)(buf + rand_below(afl, len - 1)) = SWAP16(interesting_16[item]);
1906*08b48e0bSAndroid Build Coastguard Worker
1907*08b48e0bSAndroid Build Coastguard Worker break;
1908*08b48e0bSAndroid Build Coastguard Worker
1909*08b48e0bSAndroid Build Coastguard Worker }
1910*08b48e0bSAndroid Build Coastguard Worker
1911*08b48e0bSAndroid Build Coastguard Worker case MUT_INTERESTING32: {
1912*08b48e0bSAndroid Build Coastguard Worker
1913*08b48e0bSAndroid Build Coastguard Worker /* Set dword to interesting value, little endian. */
1914*08b48e0bSAndroid Build Coastguard Worker
1915*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 4)) { break; } // no retry
1916*08b48e0bSAndroid Build Coastguard Worker
1917*08b48e0bSAndroid Build Coastguard Worker item = rand_below(afl, sizeof(interesting_32) >> 2);
1918*08b48e0bSAndroid Build Coastguard Worker *(u32 *)(buf + rand_below(afl, len - 3)) = interesting_32[item];
1919*08b48e0bSAndroid Build Coastguard Worker
1920*08b48e0bSAndroid Build Coastguard Worker break;
1921*08b48e0bSAndroid Build Coastguard Worker
1922*08b48e0bSAndroid Build Coastguard Worker }
1923*08b48e0bSAndroid Build Coastguard Worker
1924*08b48e0bSAndroid Build Coastguard Worker case MUT_INTERESTING32BE: {
1925*08b48e0bSAndroid Build Coastguard Worker
1926*08b48e0bSAndroid Build Coastguard Worker /* Set dword to interesting value, big endian. */
1927*08b48e0bSAndroid Build Coastguard Worker
1928*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 4)) { break; } // no retry
1929*08b48e0bSAndroid Build Coastguard Worker
1930*08b48e0bSAndroid Build Coastguard Worker item = rand_below(afl, sizeof(interesting_32) >> 2);
1931*08b48e0bSAndroid Build Coastguard Worker *(u32 *)(buf + rand_below(afl, len - 3)) = SWAP32(interesting_32[item]);
1932*08b48e0bSAndroid Build Coastguard Worker
1933*08b48e0bSAndroid Build Coastguard Worker break;
1934*08b48e0bSAndroid Build Coastguard Worker
1935*08b48e0bSAndroid Build Coastguard Worker }
1936*08b48e0bSAndroid Build Coastguard Worker
1937*08b48e0bSAndroid Build Coastguard Worker case MUT_ARITH8_: {
1938*08b48e0bSAndroid Build Coastguard Worker
1939*08b48e0bSAndroid Build Coastguard Worker /* Randomly subtract from byte. */
1940*08b48e0bSAndroid Build Coastguard Worker
1941*08b48e0bSAndroid Build Coastguard Worker item = 1 + rand_below(afl, ARITH_MAX);
1942*08b48e0bSAndroid Build Coastguard Worker buf[rand_below(afl, len)] -= item;
1943*08b48e0bSAndroid Build Coastguard Worker break;
1944*08b48e0bSAndroid Build Coastguard Worker
1945*08b48e0bSAndroid Build Coastguard Worker }
1946*08b48e0bSAndroid Build Coastguard Worker
1947*08b48e0bSAndroid Build Coastguard Worker case MUT_ARITH8: {
1948*08b48e0bSAndroid Build Coastguard Worker
1949*08b48e0bSAndroid Build Coastguard Worker /* Randomly add to byte. */
1950*08b48e0bSAndroid Build Coastguard Worker
1951*08b48e0bSAndroid Build Coastguard Worker item = 1 + rand_below(afl, ARITH_MAX);
1952*08b48e0bSAndroid Build Coastguard Worker buf[rand_below(afl, len)] += item;
1953*08b48e0bSAndroid Build Coastguard Worker break;
1954*08b48e0bSAndroid Build Coastguard Worker
1955*08b48e0bSAndroid Build Coastguard Worker }
1956*08b48e0bSAndroid Build Coastguard Worker
1957*08b48e0bSAndroid Build Coastguard Worker case MUT_ARITH16_: {
1958*08b48e0bSAndroid Build Coastguard Worker
1959*08b48e0bSAndroid Build Coastguard Worker /* Randomly subtract from word, little endian. */
1960*08b48e0bSAndroid Build Coastguard Worker
1961*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 2)) { break; } // no retry
1962*08b48e0bSAndroid Build Coastguard Worker
1963*08b48e0bSAndroid Build Coastguard Worker u32 pos = rand_below(afl, len - 1);
1964*08b48e0bSAndroid Build Coastguard Worker item = 1 + rand_below(afl, ARITH_MAX);
1965*08b48e0bSAndroid Build Coastguard Worker *(u16 *)(buf + pos) -= item;
1966*08b48e0bSAndroid Build Coastguard Worker
1967*08b48e0bSAndroid Build Coastguard Worker break;
1968*08b48e0bSAndroid Build Coastguard Worker
1969*08b48e0bSAndroid Build Coastguard Worker }
1970*08b48e0bSAndroid Build Coastguard Worker
1971*08b48e0bSAndroid Build Coastguard Worker case MUT_ARITH16BE_: {
1972*08b48e0bSAndroid Build Coastguard Worker
1973*08b48e0bSAndroid Build Coastguard Worker /* Randomly subtract from word, big endian. */
1974*08b48e0bSAndroid Build Coastguard Worker
1975*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 2)) { break; } // no retry
1976*08b48e0bSAndroid Build Coastguard Worker
1977*08b48e0bSAndroid Build Coastguard Worker u32 pos = rand_below(afl, len - 1);
1978*08b48e0bSAndroid Build Coastguard Worker u16 num = 1 + rand_below(afl, ARITH_MAX);
1979*08b48e0bSAndroid Build Coastguard Worker *(u16 *)(buf + pos) = SWAP16(SWAP16(*(u16 *)(buf + pos)) - num);
1980*08b48e0bSAndroid Build Coastguard Worker
1981*08b48e0bSAndroid Build Coastguard Worker break;
1982*08b48e0bSAndroid Build Coastguard Worker
1983*08b48e0bSAndroid Build Coastguard Worker }
1984*08b48e0bSAndroid Build Coastguard Worker
1985*08b48e0bSAndroid Build Coastguard Worker case MUT_ARITH16: {
1986*08b48e0bSAndroid Build Coastguard Worker
1987*08b48e0bSAndroid Build Coastguard Worker /* Randomly add to word, little endian. */
1988*08b48e0bSAndroid Build Coastguard Worker
1989*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 2)) { break; } // no retry
1990*08b48e0bSAndroid Build Coastguard Worker
1991*08b48e0bSAndroid Build Coastguard Worker u32 pos = rand_below(afl, len - 1);
1992*08b48e0bSAndroid Build Coastguard Worker item = 1 + rand_below(afl, ARITH_MAX);
1993*08b48e0bSAndroid Build Coastguard Worker *(u16 *)(buf + pos) += item;
1994*08b48e0bSAndroid Build Coastguard Worker
1995*08b48e0bSAndroid Build Coastguard Worker break;
1996*08b48e0bSAndroid Build Coastguard Worker
1997*08b48e0bSAndroid Build Coastguard Worker }
1998*08b48e0bSAndroid Build Coastguard Worker
1999*08b48e0bSAndroid Build Coastguard Worker case MUT_ARITH16BE: {
2000*08b48e0bSAndroid Build Coastguard Worker
2001*08b48e0bSAndroid Build Coastguard Worker /* Randomly add to word, big endian. */
2002*08b48e0bSAndroid Build Coastguard Worker
2003*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 2)) { break; } // no retry
2004*08b48e0bSAndroid Build Coastguard Worker
2005*08b48e0bSAndroid Build Coastguard Worker u32 pos = rand_below(afl, len - 1);
2006*08b48e0bSAndroid Build Coastguard Worker u16 num = 1 + rand_below(afl, ARITH_MAX);
2007*08b48e0bSAndroid Build Coastguard Worker *(u16 *)(buf + pos) = SWAP16(SWAP16(*(u16 *)(buf + pos)) + num);
2008*08b48e0bSAndroid Build Coastguard Worker
2009*08b48e0bSAndroid Build Coastguard Worker break;
2010*08b48e0bSAndroid Build Coastguard Worker
2011*08b48e0bSAndroid Build Coastguard Worker }
2012*08b48e0bSAndroid Build Coastguard Worker
2013*08b48e0bSAndroid Build Coastguard Worker case MUT_ARITH32_: {
2014*08b48e0bSAndroid Build Coastguard Worker
2015*08b48e0bSAndroid Build Coastguard Worker /* Randomly subtract from dword, little endian. */
2016*08b48e0bSAndroid Build Coastguard Worker
2017*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 4)) { break; } // no retry
2018*08b48e0bSAndroid Build Coastguard Worker
2019*08b48e0bSAndroid Build Coastguard Worker u32 pos = rand_below(afl, len - 3);
2020*08b48e0bSAndroid Build Coastguard Worker item = 1 + rand_below(afl, ARITH_MAX);
2021*08b48e0bSAndroid Build Coastguard Worker *(u32 *)(buf + pos) -= item;
2022*08b48e0bSAndroid Build Coastguard Worker
2023*08b48e0bSAndroid Build Coastguard Worker break;
2024*08b48e0bSAndroid Build Coastguard Worker
2025*08b48e0bSAndroid Build Coastguard Worker }
2026*08b48e0bSAndroid Build Coastguard Worker
2027*08b48e0bSAndroid Build Coastguard Worker case MUT_ARITH32BE_: {
2028*08b48e0bSAndroid Build Coastguard Worker
2029*08b48e0bSAndroid Build Coastguard Worker /* Randomly subtract from dword, big endian. */
2030*08b48e0bSAndroid Build Coastguard Worker
2031*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 4)) { break; } // no retry
2032*08b48e0bSAndroid Build Coastguard Worker
2033*08b48e0bSAndroid Build Coastguard Worker u32 pos = rand_below(afl, len - 3);
2034*08b48e0bSAndroid Build Coastguard Worker u32 num = 1 + rand_below(afl, ARITH_MAX);
2035*08b48e0bSAndroid Build Coastguard Worker *(u32 *)(buf + pos) = SWAP32(SWAP32(*(u32 *)(buf + pos)) - num);
2036*08b48e0bSAndroid Build Coastguard Worker
2037*08b48e0bSAndroid Build Coastguard Worker break;
2038*08b48e0bSAndroid Build Coastguard Worker
2039*08b48e0bSAndroid Build Coastguard Worker }
2040*08b48e0bSAndroid Build Coastguard Worker
2041*08b48e0bSAndroid Build Coastguard Worker case MUT_ARITH32: {
2042*08b48e0bSAndroid Build Coastguard Worker
2043*08b48e0bSAndroid Build Coastguard Worker /* Randomly add to dword, little endian. */
2044*08b48e0bSAndroid Build Coastguard Worker
2045*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 4)) { break; } // no retry
2046*08b48e0bSAndroid Build Coastguard Worker
2047*08b48e0bSAndroid Build Coastguard Worker u32 pos = rand_below(afl, len - 3);
2048*08b48e0bSAndroid Build Coastguard Worker item = 1 + rand_below(afl, ARITH_MAX);
2049*08b48e0bSAndroid Build Coastguard Worker *(u32 *)(buf + pos) += item;
2050*08b48e0bSAndroid Build Coastguard Worker
2051*08b48e0bSAndroid Build Coastguard Worker break;
2052*08b48e0bSAndroid Build Coastguard Worker
2053*08b48e0bSAndroid Build Coastguard Worker }
2054*08b48e0bSAndroid Build Coastguard Worker
2055*08b48e0bSAndroid Build Coastguard Worker case MUT_ARITH32BE: {
2056*08b48e0bSAndroid Build Coastguard Worker
2057*08b48e0bSAndroid Build Coastguard Worker /* Randomly add to dword, big endian. */
2058*08b48e0bSAndroid Build Coastguard Worker
2059*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 4)) { break; } // no retry
2060*08b48e0bSAndroid Build Coastguard Worker
2061*08b48e0bSAndroid Build Coastguard Worker u32 pos = rand_below(afl, len - 3);
2062*08b48e0bSAndroid Build Coastguard Worker u32 num = 1 + rand_below(afl, ARITH_MAX);
2063*08b48e0bSAndroid Build Coastguard Worker *(u32 *)(buf + pos) = SWAP32(SWAP32(*(u32 *)(buf + pos)) + num);
2064*08b48e0bSAndroid Build Coastguard Worker
2065*08b48e0bSAndroid Build Coastguard Worker break;
2066*08b48e0bSAndroid Build Coastguard Worker
2067*08b48e0bSAndroid Build Coastguard Worker }
2068*08b48e0bSAndroid Build Coastguard Worker
2069*08b48e0bSAndroid Build Coastguard Worker case MUT_RAND8: {
2070*08b48e0bSAndroid Build Coastguard Worker
2071*08b48e0bSAndroid Build Coastguard Worker /* Just set a random byte to a random value. Because,
2072*08b48e0bSAndroid Build Coastguard Worker why not. We use XOR with 1-255 to eliminate the
2073*08b48e0bSAndroid Build Coastguard Worker possibility of a no-op. */
2074*08b48e0bSAndroid Build Coastguard Worker
2075*08b48e0bSAndroid Build Coastguard Worker u32 pos = rand_below(afl, len);
2076*08b48e0bSAndroid Build Coastguard Worker item = 1 + rand_below(afl, 255);
2077*08b48e0bSAndroid Build Coastguard Worker buf[pos] ^= item;
2078*08b48e0bSAndroid Build Coastguard Worker break;
2079*08b48e0bSAndroid Build Coastguard Worker
2080*08b48e0bSAndroid Build Coastguard Worker }
2081*08b48e0bSAndroid Build Coastguard Worker
2082*08b48e0bSAndroid Build Coastguard Worker case MUT_CLONE_COPY: {
2083*08b48e0bSAndroid Build Coastguard Worker
2084*08b48e0bSAndroid Build Coastguard Worker if (likely(len + HAVOC_BLK_XL < max_len)) {
2085*08b48e0bSAndroid Build Coastguard Worker
2086*08b48e0bSAndroid Build Coastguard Worker /* Clone bytes. */
2087*08b48e0bSAndroid Build Coastguard Worker
2088*08b48e0bSAndroid Build Coastguard Worker u32 clone_len = choose_block_len(afl, len);
2089*08b48e0bSAndroid Build Coastguard Worker u32 clone_from = rand_below(afl, len - clone_len + 1);
2090*08b48e0bSAndroid Build Coastguard Worker u32 clone_to = rand_below(afl, len);
2091*08b48e0bSAndroid Build Coastguard Worker
2092*08b48e0bSAndroid Build Coastguard Worker /* Head */
2093*08b48e0bSAndroid Build Coastguard Worker
2094*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf, buf, clone_to);
2095*08b48e0bSAndroid Build Coastguard Worker
2096*08b48e0bSAndroid Build Coastguard Worker /* Inserted part */
2097*08b48e0bSAndroid Build Coastguard Worker
2098*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf + clone_to, buf + clone_from, clone_len);
2099*08b48e0bSAndroid Build Coastguard Worker
2100*08b48e0bSAndroid Build Coastguard Worker /* Tail */
2101*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf + clone_to + clone_len, buf + clone_to,
2102*08b48e0bSAndroid Build Coastguard Worker len - clone_to);
2103*08b48e0bSAndroid Build Coastguard Worker
2104*08b48e0bSAndroid Build Coastguard Worker len += clone_len;
2105*08b48e0bSAndroid Build Coastguard Worker memcpy(buf, tmp_buf, len);
2106*08b48e0bSAndroid Build Coastguard Worker
2107*08b48e0bSAndroid Build Coastguard Worker } else if (unlikely(len < 8)) {
2108*08b48e0bSAndroid Build Coastguard Worker
2109*08b48e0bSAndroid Build Coastguard Worker break;
2110*08b48e0bSAndroid Build Coastguard Worker
2111*08b48e0bSAndroid Build Coastguard Worker } else {
2112*08b48e0bSAndroid Build Coastguard Worker
2113*08b48e0bSAndroid Build Coastguard Worker goto retry_havoc_step;
2114*08b48e0bSAndroid Build Coastguard Worker
2115*08b48e0bSAndroid Build Coastguard Worker }
2116*08b48e0bSAndroid Build Coastguard Worker
2117*08b48e0bSAndroid Build Coastguard Worker break;
2118*08b48e0bSAndroid Build Coastguard Worker
2119*08b48e0bSAndroid Build Coastguard Worker }
2120*08b48e0bSAndroid Build Coastguard Worker
2121*08b48e0bSAndroid Build Coastguard Worker case MUT_CLONE_FIXED: {
2122*08b48e0bSAndroid Build Coastguard Worker
2123*08b48e0bSAndroid Build Coastguard Worker if (likely(len + HAVOC_BLK_XL < max_len)) {
2124*08b48e0bSAndroid Build Coastguard Worker
2125*08b48e0bSAndroid Build Coastguard Worker /* Insert a block of constant bytes (25%). */
2126*08b48e0bSAndroid Build Coastguard Worker
2127*08b48e0bSAndroid Build Coastguard Worker u32 clone_len = choose_block_len(afl, HAVOC_BLK_XL);
2128*08b48e0bSAndroid Build Coastguard Worker u32 clone_to = rand_below(afl, len);
2129*08b48e0bSAndroid Build Coastguard Worker u32 strat = rand_below(afl, 2);
2130*08b48e0bSAndroid Build Coastguard Worker u32 clone_from = clone_to ? clone_to - 1 : 0;
2131*08b48e0bSAndroid Build Coastguard Worker item = strat ? rand_below(afl, 256) : buf[clone_from];
2132*08b48e0bSAndroid Build Coastguard Worker
2133*08b48e0bSAndroid Build Coastguard Worker /* Head */
2134*08b48e0bSAndroid Build Coastguard Worker
2135*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf, buf, clone_to);
2136*08b48e0bSAndroid Build Coastguard Worker
2137*08b48e0bSAndroid Build Coastguard Worker /* Inserted part */
2138*08b48e0bSAndroid Build Coastguard Worker
2139*08b48e0bSAndroid Build Coastguard Worker memset(tmp_buf + clone_to, item, clone_len);
2140*08b48e0bSAndroid Build Coastguard Worker
2141*08b48e0bSAndroid Build Coastguard Worker /* Tail */
2142*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf + clone_to + clone_len, buf + clone_to,
2143*08b48e0bSAndroid Build Coastguard Worker len - clone_to);
2144*08b48e0bSAndroid Build Coastguard Worker
2145*08b48e0bSAndroid Build Coastguard Worker len += clone_len;
2146*08b48e0bSAndroid Build Coastguard Worker memcpy(buf, tmp_buf, len);
2147*08b48e0bSAndroid Build Coastguard Worker
2148*08b48e0bSAndroid Build Coastguard Worker } else if (unlikely(len < 8)) {
2149*08b48e0bSAndroid Build Coastguard Worker
2150*08b48e0bSAndroid Build Coastguard Worker break;
2151*08b48e0bSAndroid Build Coastguard Worker
2152*08b48e0bSAndroid Build Coastguard Worker } else {
2153*08b48e0bSAndroid Build Coastguard Worker
2154*08b48e0bSAndroid Build Coastguard Worker goto retry_havoc_step;
2155*08b48e0bSAndroid Build Coastguard Worker
2156*08b48e0bSAndroid Build Coastguard Worker }
2157*08b48e0bSAndroid Build Coastguard Worker
2158*08b48e0bSAndroid Build Coastguard Worker break;
2159*08b48e0bSAndroid Build Coastguard Worker
2160*08b48e0bSAndroid Build Coastguard Worker }
2161*08b48e0bSAndroid Build Coastguard Worker
2162*08b48e0bSAndroid Build Coastguard Worker case MUT_OVERWRITE_COPY: {
2163*08b48e0bSAndroid Build Coastguard Worker
2164*08b48e0bSAndroid Build Coastguard Worker /* Overwrite bytes with a randomly selected chunk bytes. */
2165*08b48e0bSAndroid Build Coastguard Worker
2166*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 2)) { break; } // no retry
2167*08b48e0bSAndroid Build Coastguard Worker
2168*08b48e0bSAndroid Build Coastguard Worker u32 copy_len = choose_block_len(afl, len - 1);
2169*08b48e0bSAndroid Build Coastguard Worker u32 copy_from = rand_below(afl, len - copy_len + 1);
2170*08b48e0bSAndroid Build Coastguard Worker u32 copy_to = rand_below(afl, len - copy_len + 1);
2171*08b48e0bSAndroid Build Coastguard Worker
2172*08b48e0bSAndroid Build Coastguard Worker if (likely(copy_from != copy_to)) {
2173*08b48e0bSAndroid Build Coastguard Worker
2174*08b48e0bSAndroid Build Coastguard Worker memmove(buf + copy_to, buf + copy_from, copy_len);
2175*08b48e0bSAndroid Build Coastguard Worker
2176*08b48e0bSAndroid Build Coastguard Worker }
2177*08b48e0bSAndroid Build Coastguard Worker
2178*08b48e0bSAndroid Build Coastguard Worker break;
2179*08b48e0bSAndroid Build Coastguard Worker
2180*08b48e0bSAndroid Build Coastguard Worker }
2181*08b48e0bSAndroid Build Coastguard Worker
2182*08b48e0bSAndroid Build Coastguard Worker case MUT_OVERWRITE_FIXED: {
2183*08b48e0bSAndroid Build Coastguard Worker
2184*08b48e0bSAndroid Build Coastguard Worker /* Overwrite bytes with fixed bytes. */
2185*08b48e0bSAndroid Build Coastguard Worker
2186*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 2)) { break; } // no retry
2187*08b48e0bSAndroid Build Coastguard Worker
2188*08b48e0bSAndroid Build Coastguard Worker u32 copy_len = choose_block_len(afl, len - 1);
2189*08b48e0bSAndroid Build Coastguard Worker u32 copy_to = rand_below(afl, len - copy_len + 1);
2190*08b48e0bSAndroid Build Coastguard Worker u32 strat = rand_below(afl, 2);
2191*08b48e0bSAndroid Build Coastguard Worker u32 copy_from = copy_to ? copy_to - 1 : 0;
2192*08b48e0bSAndroid Build Coastguard Worker item = strat ? rand_below(afl, 256) : buf[copy_from];
2193*08b48e0bSAndroid Build Coastguard Worker memset(buf + copy_to, item, copy_len);
2194*08b48e0bSAndroid Build Coastguard Worker
2195*08b48e0bSAndroid Build Coastguard Worker break;
2196*08b48e0bSAndroid Build Coastguard Worker
2197*08b48e0bSAndroid Build Coastguard Worker }
2198*08b48e0bSAndroid Build Coastguard Worker
2199*08b48e0bSAndroid Build Coastguard Worker case MUT_BYTEADD: {
2200*08b48e0bSAndroid Build Coastguard Worker
2201*08b48e0bSAndroid Build Coastguard Worker /* Increase byte by 1. */
2202*08b48e0bSAndroid Build Coastguard Worker
2203*08b48e0bSAndroid Build Coastguard Worker buf[rand_below(afl, len)]++;
2204*08b48e0bSAndroid Build Coastguard Worker break;
2205*08b48e0bSAndroid Build Coastguard Worker
2206*08b48e0bSAndroid Build Coastguard Worker }
2207*08b48e0bSAndroid Build Coastguard Worker
2208*08b48e0bSAndroid Build Coastguard Worker case MUT_BYTESUB: {
2209*08b48e0bSAndroid Build Coastguard Worker
2210*08b48e0bSAndroid Build Coastguard Worker /* Decrease byte by 1. */
2211*08b48e0bSAndroid Build Coastguard Worker
2212*08b48e0bSAndroid Build Coastguard Worker buf[rand_below(afl, len)]--;
2213*08b48e0bSAndroid Build Coastguard Worker break;
2214*08b48e0bSAndroid Build Coastguard Worker
2215*08b48e0bSAndroid Build Coastguard Worker }
2216*08b48e0bSAndroid Build Coastguard Worker
2217*08b48e0bSAndroid Build Coastguard Worker case MUT_FLIP8: {
2218*08b48e0bSAndroid Build Coastguard Worker
2219*08b48e0bSAndroid Build Coastguard Worker /* Flip byte. */
2220*08b48e0bSAndroid Build Coastguard Worker
2221*08b48e0bSAndroid Build Coastguard Worker buf[rand_below(afl, len)] ^= 0xff;
2222*08b48e0bSAndroid Build Coastguard Worker break;
2223*08b48e0bSAndroid Build Coastguard Worker
2224*08b48e0bSAndroid Build Coastguard Worker }
2225*08b48e0bSAndroid Build Coastguard Worker
2226*08b48e0bSAndroid Build Coastguard Worker case MUT_SWITCH: {
2227*08b48e0bSAndroid Build Coastguard Worker
2228*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 4)) { break; } // no retry
2229*08b48e0bSAndroid Build Coastguard Worker
2230*08b48e0bSAndroid Build Coastguard Worker /* Switch bytes. */
2231*08b48e0bSAndroid Build Coastguard Worker
2232*08b48e0bSAndroid Build Coastguard Worker u32 to_end, switch_to, switch_len, switch_from;
2233*08b48e0bSAndroid Build Coastguard Worker switch_from = rand_below(afl, len);
2234*08b48e0bSAndroid Build Coastguard Worker do {
2235*08b48e0bSAndroid Build Coastguard Worker
2236*08b48e0bSAndroid Build Coastguard Worker switch_to = rand_below(afl, len);
2237*08b48e0bSAndroid Build Coastguard Worker
2238*08b48e0bSAndroid Build Coastguard Worker } while (unlikely(switch_from == switch_to));
2239*08b48e0bSAndroid Build Coastguard Worker
2240*08b48e0bSAndroid Build Coastguard Worker if (switch_from < switch_to) {
2241*08b48e0bSAndroid Build Coastguard Worker
2242*08b48e0bSAndroid Build Coastguard Worker switch_len = switch_to - switch_from;
2243*08b48e0bSAndroid Build Coastguard Worker to_end = len - switch_to;
2244*08b48e0bSAndroid Build Coastguard Worker
2245*08b48e0bSAndroid Build Coastguard Worker } else {
2246*08b48e0bSAndroid Build Coastguard Worker
2247*08b48e0bSAndroid Build Coastguard Worker switch_len = switch_from - switch_to;
2248*08b48e0bSAndroid Build Coastguard Worker to_end = len - switch_from;
2249*08b48e0bSAndroid Build Coastguard Worker
2250*08b48e0bSAndroid Build Coastguard Worker }
2251*08b48e0bSAndroid Build Coastguard Worker
2252*08b48e0bSAndroid Build Coastguard Worker switch_len = choose_block_len(afl, MIN(switch_len, to_end));
2253*08b48e0bSAndroid Build Coastguard Worker
2254*08b48e0bSAndroid Build Coastguard Worker /* Backup */
2255*08b48e0bSAndroid Build Coastguard Worker
2256*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf, buf + switch_from, switch_len);
2257*08b48e0bSAndroid Build Coastguard Worker
2258*08b48e0bSAndroid Build Coastguard Worker /* Switch 1 */
2259*08b48e0bSAndroid Build Coastguard Worker
2260*08b48e0bSAndroid Build Coastguard Worker memcpy(buf + switch_from, buf + switch_to, switch_len);
2261*08b48e0bSAndroid Build Coastguard Worker
2262*08b48e0bSAndroid Build Coastguard Worker /* Switch 2 */
2263*08b48e0bSAndroid Build Coastguard Worker
2264*08b48e0bSAndroid Build Coastguard Worker memcpy(buf + switch_to, tmp_buf, switch_len);
2265*08b48e0bSAndroid Build Coastguard Worker
2266*08b48e0bSAndroid Build Coastguard Worker break;
2267*08b48e0bSAndroid Build Coastguard Worker
2268*08b48e0bSAndroid Build Coastguard Worker }
2269*08b48e0bSAndroid Build Coastguard Worker
2270*08b48e0bSAndroid Build Coastguard Worker case MUT_DEL: {
2271*08b48e0bSAndroid Build Coastguard Worker
2272*08b48e0bSAndroid Build Coastguard Worker /* Delete bytes. */
2273*08b48e0bSAndroid Build Coastguard Worker
2274*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 2)) { break; } // no retry
2275*08b48e0bSAndroid Build Coastguard Worker
2276*08b48e0bSAndroid Build Coastguard Worker /* Don't delete too much. */
2277*08b48e0bSAndroid Build Coastguard Worker
2278*08b48e0bSAndroid Build Coastguard Worker u32 del_len = choose_block_len(afl, len - 1);
2279*08b48e0bSAndroid Build Coastguard Worker u32 del_from = rand_below(afl, len - del_len + 1);
2280*08b48e0bSAndroid Build Coastguard Worker memmove(buf + del_from, buf + del_from + del_len,
2281*08b48e0bSAndroid Build Coastguard Worker len - del_from - del_len);
2282*08b48e0bSAndroid Build Coastguard Worker len -= del_len;
2283*08b48e0bSAndroid Build Coastguard Worker
2284*08b48e0bSAndroid Build Coastguard Worker break;
2285*08b48e0bSAndroid Build Coastguard Worker
2286*08b48e0bSAndroid Build Coastguard Worker }
2287*08b48e0bSAndroid Build Coastguard Worker
2288*08b48e0bSAndroid Build Coastguard Worker case MUT_SHUFFLE: {
2289*08b48e0bSAndroid Build Coastguard Worker
2290*08b48e0bSAndroid Build Coastguard Worker /* Shuffle bytes. */
2291*08b48e0bSAndroid Build Coastguard Worker
2292*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 4)) { break; } // no retry
2293*08b48e0bSAndroid Build Coastguard Worker
2294*08b48e0bSAndroid Build Coastguard Worker u32 blen = choose_block_len(afl, len - 1);
2295*08b48e0bSAndroid Build Coastguard Worker u32 off = rand_below(afl, len - blen + 1);
2296*08b48e0bSAndroid Build Coastguard Worker
2297*08b48e0bSAndroid Build Coastguard Worker for (u32 i = blen - 1; i > 0; i--) {
2298*08b48e0bSAndroid Build Coastguard Worker
2299*08b48e0bSAndroid Build Coastguard Worker u32 j;
2300*08b48e0bSAndroid Build Coastguard Worker do {
2301*08b48e0bSAndroid Build Coastguard Worker
2302*08b48e0bSAndroid Build Coastguard Worker j = rand_below(afl, i + 1);
2303*08b48e0bSAndroid Build Coastguard Worker
2304*08b48e0bSAndroid Build Coastguard Worker } while (unlikely(i == j));
2305*08b48e0bSAndroid Build Coastguard Worker
2306*08b48e0bSAndroid Build Coastguard Worker u8 temp = buf[off + i];
2307*08b48e0bSAndroid Build Coastguard Worker buf[off + i] = buf[off + j];
2308*08b48e0bSAndroid Build Coastguard Worker buf[off + j] = temp;
2309*08b48e0bSAndroid Build Coastguard Worker
2310*08b48e0bSAndroid Build Coastguard Worker }
2311*08b48e0bSAndroid Build Coastguard Worker
2312*08b48e0bSAndroid Build Coastguard Worker break;
2313*08b48e0bSAndroid Build Coastguard Worker
2314*08b48e0bSAndroid Build Coastguard Worker }
2315*08b48e0bSAndroid Build Coastguard Worker
2316*08b48e0bSAndroid Build Coastguard Worker case MUT_DELONE: {
2317*08b48e0bSAndroid Build Coastguard Worker
2318*08b48e0bSAndroid Build Coastguard Worker /* Delete bytes. */
2319*08b48e0bSAndroid Build Coastguard Worker
2320*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 2)) { break; } // no retry
2321*08b48e0bSAndroid Build Coastguard Worker
2322*08b48e0bSAndroid Build Coastguard Worker /* Don't delete too much. */
2323*08b48e0bSAndroid Build Coastguard Worker
2324*08b48e0bSAndroid Build Coastguard Worker u32 del_len = 1;
2325*08b48e0bSAndroid Build Coastguard Worker u32 del_from = rand_below(afl, len - del_len + 1);
2326*08b48e0bSAndroid Build Coastguard Worker memmove(buf + del_from, buf + del_from + del_len,
2327*08b48e0bSAndroid Build Coastguard Worker len - del_from - del_len);
2328*08b48e0bSAndroid Build Coastguard Worker
2329*08b48e0bSAndroid Build Coastguard Worker len -= del_len;
2330*08b48e0bSAndroid Build Coastguard Worker
2331*08b48e0bSAndroid Build Coastguard Worker break;
2332*08b48e0bSAndroid Build Coastguard Worker
2333*08b48e0bSAndroid Build Coastguard Worker }
2334*08b48e0bSAndroid Build Coastguard Worker
2335*08b48e0bSAndroid Build Coastguard Worker case MUT_INSERTONE: {
2336*08b48e0bSAndroid Build Coastguard Worker
2337*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 2)) { break; } // no retry
2338*08b48e0bSAndroid Build Coastguard Worker
2339*08b48e0bSAndroid Build Coastguard Worker u32 clone_len = 1;
2340*08b48e0bSAndroid Build Coastguard Worker u32 clone_to = rand_below(afl, len);
2341*08b48e0bSAndroid Build Coastguard Worker u32 strat = rand_below(afl, 2);
2342*08b48e0bSAndroid Build Coastguard Worker u32 clone_from = clone_to ? clone_to - 1 : 0;
2343*08b48e0bSAndroid Build Coastguard Worker item = strat ? rand_below(afl, 256) : buf[clone_from];
2344*08b48e0bSAndroid Build Coastguard Worker
2345*08b48e0bSAndroid Build Coastguard Worker /* Head */
2346*08b48e0bSAndroid Build Coastguard Worker
2347*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf, buf, clone_to);
2348*08b48e0bSAndroid Build Coastguard Worker
2349*08b48e0bSAndroid Build Coastguard Worker /* Inserted part */
2350*08b48e0bSAndroid Build Coastguard Worker
2351*08b48e0bSAndroid Build Coastguard Worker memset(tmp_buf + clone_to, item, clone_len);
2352*08b48e0bSAndroid Build Coastguard Worker
2353*08b48e0bSAndroid Build Coastguard Worker /* Tail */
2354*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf + clone_to + clone_len, buf + clone_to, len - clone_to);
2355*08b48e0bSAndroid Build Coastguard Worker
2356*08b48e0bSAndroid Build Coastguard Worker len += clone_len;
2357*08b48e0bSAndroid Build Coastguard Worker memcpy(buf, tmp_buf, len);
2358*08b48e0bSAndroid Build Coastguard Worker
2359*08b48e0bSAndroid Build Coastguard Worker break;
2360*08b48e0bSAndroid Build Coastguard Worker
2361*08b48e0bSAndroid Build Coastguard Worker }
2362*08b48e0bSAndroid Build Coastguard Worker
2363*08b48e0bSAndroid Build Coastguard Worker case MUT_ASCIINUM: {
2364*08b48e0bSAndroid Build Coastguard Worker
2365*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 4)) { break; } // no retry
2366*08b48e0bSAndroid Build Coastguard Worker
2367*08b48e0bSAndroid Build Coastguard Worker u32 off = rand_below(afl, len), off2 = off, cnt = 0;
2368*08b48e0bSAndroid Build Coastguard Worker
2369*08b48e0bSAndroid Build Coastguard Worker while (off2 + cnt < len && !isdigit(buf[off2 + cnt])) {
2370*08b48e0bSAndroid Build Coastguard Worker
2371*08b48e0bSAndroid Build Coastguard Worker ++cnt;
2372*08b48e0bSAndroid Build Coastguard Worker
2373*08b48e0bSAndroid Build Coastguard Worker }
2374*08b48e0bSAndroid Build Coastguard Worker
2375*08b48e0bSAndroid Build Coastguard Worker // none found, wrap
2376*08b48e0bSAndroid Build Coastguard Worker if (off2 + cnt == len) {
2377*08b48e0bSAndroid Build Coastguard Worker
2378*08b48e0bSAndroid Build Coastguard Worker off2 = 0;
2379*08b48e0bSAndroid Build Coastguard Worker cnt = 0;
2380*08b48e0bSAndroid Build Coastguard Worker
2381*08b48e0bSAndroid Build Coastguard Worker while (cnt < off && !isdigit(buf[off2 + cnt])) {
2382*08b48e0bSAndroid Build Coastguard Worker
2383*08b48e0bSAndroid Build Coastguard Worker ++cnt;
2384*08b48e0bSAndroid Build Coastguard Worker
2385*08b48e0bSAndroid Build Coastguard Worker }
2386*08b48e0bSAndroid Build Coastguard Worker
2387*08b48e0bSAndroid Build Coastguard Worker if (cnt == off) {
2388*08b48e0bSAndroid Build Coastguard Worker
2389*08b48e0bSAndroid Build Coastguard Worker if (len < 8) {
2390*08b48e0bSAndroid Build Coastguard Worker
2391*08b48e0bSAndroid Build Coastguard Worker break;
2392*08b48e0bSAndroid Build Coastguard Worker
2393*08b48e0bSAndroid Build Coastguard Worker } else {
2394*08b48e0bSAndroid Build Coastguard Worker
2395*08b48e0bSAndroid Build Coastguard Worker goto retry_havoc_step;
2396*08b48e0bSAndroid Build Coastguard Worker
2397*08b48e0bSAndroid Build Coastguard Worker }
2398*08b48e0bSAndroid Build Coastguard Worker
2399*08b48e0bSAndroid Build Coastguard Worker }
2400*08b48e0bSAndroid Build Coastguard Worker
2401*08b48e0bSAndroid Build Coastguard Worker }
2402*08b48e0bSAndroid Build Coastguard Worker
2403*08b48e0bSAndroid Build Coastguard Worker off = off2 + cnt;
2404*08b48e0bSAndroid Build Coastguard Worker off2 = off + 1;
2405*08b48e0bSAndroid Build Coastguard Worker
2406*08b48e0bSAndroid Build Coastguard Worker while (off2 < len && isdigit(buf[off2])) {
2407*08b48e0bSAndroid Build Coastguard Worker
2408*08b48e0bSAndroid Build Coastguard Worker ++off2;
2409*08b48e0bSAndroid Build Coastguard Worker
2410*08b48e0bSAndroid Build Coastguard Worker }
2411*08b48e0bSAndroid Build Coastguard Worker
2412*08b48e0bSAndroid Build Coastguard Worker s64 val = buf[off] - '0';
2413*08b48e0bSAndroid Build Coastguard Worker for (u32 i = off + 1; i < off2; ++i) {
2414*08b48e0bSAndroid Build Coastguard Worker
2415*08b48e0bSAndroid Build Coastguard Worker val = (val * 10) + buf[i] - '0';
2416*08b48e0bSAndroid Build Coastguard Worker
2417*08b48e0bSAndroid Build Coastguard Worker }
2418*08b48e0bSAndroid Build Coastguard Worker
2419*08b48e0bSAndroid Build Coastguard Worker if (off && buf[off - 1] == '-') { val = -val; }
2420*08b48e0bSAndroid Build Coastguard Worker
2421*08b48e0bSAndroid Build Coastguard Worker u32 strat = rand_below(afl, 8);
2422*08b48e0bSAndroid Build Coastguard Worker switch (strat) {
2423*08b48e0bSAndroid Build Coastguard Worker
2424*08b48e0bSAndroid Build Coastguard Worker case 0:
2425*08b48e0bSAndroid Build Coastguard Worker val++;
2426*08b48e0bSAndroid Build Coastguard Worker break;
2427*08b48e0bSAndroid Build Coastguard Worker case 1:
2428*08b48e0bSAndroid Build Coastguard Worker val--;
2429*08b48e0bSAndroid Build Coastguard Worker break;
2430*08b48e0bSAndroid Build Coastguard Worker case 2:
2431*08b48e0bSAndroid Build Coastguard Worker val *= 2;
2432*08b48e0bSAndroid Build Coastguard Worker break;
2433*08b48e0bSAndroid Build Coastguard Worker case 3:
2434*08b48e0bSAndroid Build Coastguard Worker val /= 2;
2435*08b48e0bSAndroid Build Coastguard Worker break;
2436*08b48e0bSAndroid Build Coastguard Worker case 4:
2437*08b48e0bSAndroid Build Coastguard Worker if (likely(val && (u64)val < 0x19999999)) {
2438*08b48e0bSAndroid Build Coastguard Worker
2439*08b48e0bSAndroid Build Coastguard Worker val = (u64)rand_next(afl) % (u64)((u64)val * 10);
2440*08b48e0bSAndroid Build Coastguard Worker
2441*08b48e0bSAndroid Build Coastguard Worker } else {
2442*08b48e0bSAndroid Build Coastguard Worker
2443*08b48e0bSAndroid Build Coastguard Worker val = rand_below(afl, 256);
2444*08b48e0bSAndroid Build Coastguard Worker
2445*08b48e0bSAndroid Build Coastguard Worker }
2446*08b48e0bSAndroid Build Coastguard Worker
2447*08b48e0bSAndroid Build Coastguard Worker break;
2448*08b48e0bSAndroid Build Coastguard Worker case 5:
2449*08b48e0bSAndroid Build Coastguard Worker val += rand_below(afl, 256);
2450*08b48e0bSAndroid Build Coastguard Worker break;
2451*08b48e0bSAndroid Build Coastguard Worker case 6:
2452*08b48e0bSAndroid Build Coastguard Worker val -= rand_below(afl, 256);
2453*08b48e0bSAndroid Build Coastguard Worker break;
2454*08b48e0bSAndroid Build Coastguard Worker case 7:
2455*08b48e0bSAndroid Build Coastguard Worker val = ~(val);
2456*08b48e0bSAndroid Build Coastguard Worker break;
2457*08b48e0bSAndroid Build Coastguard Worker
2458*08b48e0bSAndroid Build Coastguard Worker }
2459*08b48e0bSAndroid Build Coastguard Worker
2460*08b48e0bSAndroid Build Coastguard Worker char numbuf[32];
2461*08b48e0bSAndroid Build Coastguard Worker snprintf(numbuf, sizeof(buf), "%" PRId64, val);
2462*08b48e0bSAndroid Build Coastguard Worker u32 old_len = off2 - off;
2463*08b48e0bSAndroid Build Coastguard Worker u32 new_len = strlen(numbuf);
2464*08b48e0bSAndroid Build Coastguard Worker
2465*08b48e0bSAndroid Build Coastguard Worker if (old_len == new_len) {
2466*08b48e0bSAndroid Build Coastguard Worker
2467*08b48e0bSAndroid Build Coastguard Worker memcpy(buf + off, numbuf, new_len);
2468*08b48e0bSAndroid Build Coastguard Worker
2469*08b48e0bSAndroid Build Coastguard Worker } else {
2470*08b48e0bSAndroid Build Coastguard Worker
2471*08b48e0bSAndroid Build Coastguard Worker /* Head */
2472*08b48e0bSAndroid Build Coastguard Worker
2473*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf, buf, off);
2474*08b48e0bSAndroid Build Coastguard Worker
2475*08b48e0bSAndroid Build Coastguard Worker /* Inserted part */
2476*08b48e0bSAndroid Build Coastguard Worker
2477*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf + off, numbuf, new_len);
2478*08b48e0bSAndroid Build Coastguard Worker
2479*08b48e0bSAndroid Build Coastguard Worker /* Tail */
2480*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf + off + new_len, buf + off2, len - off2);
2481*08b48e0bSAndroid Build Coastguard Worker
2482*08b48e0bSAndroid Build Coastguard Worker len += (new_len - old_len);
2483*08b48e0bSAndroid Build Coastguard Worker memcpy(buf, tmp_buf, len);
2484*08b48e0bSAndroid Build Coastguard Worker
2485*08b48e0bSAndroid Build Coastguard Worker }
2486*08b48e0bSAndroid Build Coastguard Worker
2487*08b48e0bSAndroid Build Coastguard Worker // fprintf(stderr, "AFTER : %s\n", buf);
2488*08b48e0bSAndroid Build Coastguard Worker break;
2489*08b48e0bSAndroid Build Coastguard Worker
2490*08b48e0bSAndroid Build Coastguard Worker }
2491*08b48e0bSAndroid Build Coastguard Worker
2492*08b48e0bSAndroid Build Coastguard Worker case MUT_INSERTASCIINUM: {
2493*08b48e0bSAndroid Build Coastguard Worker
2494*08b48e0bSAndroid Build Coastguard Worker u32 ins_len = 1 + rand_below(afl, 8);
2495*08b48e0bSAndroid Build Coastguard Worker u32 pos = rand_below(afl, len);
2496*08b48e0bSAndroid Build Coastguard Worker
2497*08b48e0bSAndroid Build Coastguard Worker /* Insert ascii number. */
2498*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < pos + ins_len)) {
2499*08b48e0bSAndroid Build Coastguard Worker
2500*08b48e0bSAndroid Build Coastguard Worker // no retry if we have a small input
2501*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len < 8)) {
2502*08b48e0bSAndroid Build Coastguard Worker
2503*08b48e0bSAndroid Build Coastguard Worker break;
2504*08b48e0bSAndroid Build Coastguard Worker
2505*08b48e0bSAndroid Build Coastguard Worker } else {
2506*08b48e0bSAndroid Build Coastguard Worker
2507*08b48e0bSAndroid Build Coastguard Worker goto retry_havoc_step;
2508*08b48e0bSAndroid Build Coastguard Worker
2509*08b48e0bSAndroid Build Coastguard Worker }
2510*08b48e0bSAndroid Build Coastguard Worker
2511*08b48e0bSAndroid Build Coastguard Worker }
2512*08b48e0bSAndroid Build Coastguard Worker
2513*08b48e0bSAndroid Build Coastguard Worker u64 val = rand_next(afl);
2514*08b48e0bSAndroid Build Coastguard Worker char numbuf[32];
2515*08b48e0bSAndroid Build Coastguard Worker snprintf(numbuf, sizeof(numbuf), "%llu", val);
2516*08b48e0bSAndroid Build Coastguard Worker size_t val_len = strlen(numbuf), off;
2517*08b48e0bSAndroid Build Coastguard Worker
2518*08b48e0bSAndroid Build Coastguard Worker if (ins_len > val_len) {
2519*08b48e0bSAndroid Build Coastguard Worker
2520*08b48e0bSAndroid Build Coastguard Worker ins_len = val_len;
2521*08b48e0bSAndroid Build Coastguard Worker off = 0;
2522*08b48e0bSAndroid Build Coastguard Worker
2523*08b48e0bSAndroid Build Coastguard Worker } else {
2524*08b48e0bSAndroid Build Coastguard Worker
2525*08b48e0bSAndroid Build Coastguard Worker off = val_len - ins_len;
2526*08b48e0bSAndroid Build Coastguard Worker
2527*08b48e0bSAndroid Build Coastguard Worker }
2528*08b48e0bSAndroid Build Coastguard Worker
2529*08b48e0bSAndroid Build Coastguard Worker memcpy(buf + pos, numbuf + off, ins_len);
2530*08b48e0bSAndroid Build Coastguard Worker
2531*08b48e0bSAndroid Build Coastguard Worker break;
2532*08b48e0bSAndroid Build Coastguard Worker
2533*08b48e0bSAndroid Build Coastguard Worker }
2534*08b48e0bSAndroid Build Coastguard Worker
2535*08b48e0bSAndroid Build Coastguard Worker case MUT_EXTRA_OVERWRITE: {
2536*08b48e0bSAndroid Build Coastguard Worker
2537*08b48e0bSAndroid Build Coastguard Worker if (unlikely(!afl->extras_cnt)) { goto retry_havoc_step; }
2538*08b48e0bSAndroid Build Coastguard Worker
2539*08b48e0bSAndroid Build Coastguard Worker /* Use the dictionary. */
2540*08b48e0bSAndroid Build Coastguard Worker
2541*08b48e0bSAndroid Build Coastguard Worker u32 use_extra = rand_below(afl, afl->extras_cnt);
2542*08b48e0bSAndroid Build Coastguard Worker u32 extra_len = afl->extras[use_extra].len;
2543*08b48e0bSAndroid Build Coastguard Worker
2544*08b48e0bSAndroid Build Coastguard Worker if (unlikely(extra_len > len)) { goto retry_havoc_step; }
2545*08b48e0bSAndroid Build Coastguard Worker
2546*08b48e0bSAndroid Build Coastguard Worker u32 insert_at = rand_below(afl, len - extra_len + 1);
2547*08b48e0bSAndroid Build Coastguard Worker memcpy(buf + insert_at, afl->extras[use_extra].data, extra_len);
2548*08b48e0bSAndroid Build Coastguard Worker
2549*08b48e0bSAndroid Build Coastguard Worker break;
2550*08b48e0bSAndroid Build Coastguard Worker
2551*08b48e0bSAndroid Build Coastguard Worker }
2552*08b48e0bSAndroid Build Coastguard Worker
2553*08b48e0bSAndroid Build Coastguard Worker case MUT_EXTRA_INSERT: {
2554*08b48e0bSAndroid Build Coastguard Worker
2555*08b48e0bSAndroid Build Coastguard Worker if (unlikely(!afl->extras_cnt)) { goto retry_havoc_step; }
2556*08b48e0bSAndroid Build Coastguard Worker
2557*08b48e0bSAndroid Build Coastguard Worker u32 use_extra = rand_below(afl, afl->extras_cnt);
2558*08b48e0bSAndroid Build Coastguard Worker u32 extra_len = afl->extras[use_extra].len;
2559*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len + extra_len >= max_len)) { goto retry_havoc_step; }
2560*08b48e0bSAndroid Build Coastguard Worker
2561*08b48e0bSAndroid Build Coastguard Worker u8 *ptr = afl->extras[use_extra].data;
2562*08b48e0bSAndroid Build Coastguard Worker u32 insert_at = rand_below(afl, len + 1);
2563*08b48e0bSAndroid Build Coastguard Worker
2564*08b48e0bSAndroid Build Coastguard Worker /* Tail */
2565*08b48e0bSAndroid Build Coastguard Worker memmove(buf + insert_at + extra_len, buf + insert_at, len - insert_at);
2566*08b48e0bSAndroid Build Coastguard Worker
2567*08b48e0bSAndroid Build Coastguard Worker /* Inserted part */
2568*08b48e0bSAndroid Build Coastguard Worker memcpy(buf + insert_at, ptr, extra_len);
2569*08b48e0bSAndroid Build Coastguard Worker len += extra_len;
2570*08b48e0bSAndroid Build Coastguard Worker
2571*08b48e0bSAndroid Build Coastguard Worker break;
2572*08b48e0bSAndroid Build Coastguard Worker
2573*08b48e0bSAndroid Build Coastguard Worker }
2574*08b48e0bSAndroid Build Coastguard Worker
2575*08b48e0bSAndroid Build Coastguard Worker case MUT_AUTO_EXTRA_OVERWRITE: {
2576*08b48e0bSAndroid Build Coastguard Worker
2577*08b48e0bSAndroid Build Coastguard Worker if (unlikely(!afl->a_extras_cnt)) { goto retry_havoc_step; }
2578*08b48e0bSAndroid Build Coastguard Worker
2579*08b48e0bSAndroid Build Coastguard Worker /* Use the dictionary. */
2580*08b48e0bSAndroid Build Coastguard Worker
2581*08b48e0bSAndroid Build Coastguard Worker u32 use_extra = rand_below(afl, afl->a_extras_cnt);
2582*08b48e0bSAndroid Build Coastguard Worker u32 extra_len = afl->a_extras[use_extra].len;
2583*08b48e0bSAndroid Build Coastguard Worker
2584*08b48e0bSAndroid Build Coastguard Worker if (unlikely(extra_len > len)) { goto retry_havoc_step; }
2585*08b48e0bSAndroid Build Coastguard Worker
2586*08b48e0bSAndroid Build Coastguard Worker u32 insert_at = rand_below(afl, len - extra_len + 1);
2587*08b48e0bSAndroid Build Coastguard Worker memcpy(buf + insert_at, afl->a_extras[use_extra].data, extra_len);
2588*08b48e0bSAndroid Build Coastguard Worker
2589*08b48e0bSAndroid Build Coastguard Worker break;
2590*08b48e0bSAndroid Build Coastguard Worker
2591*08b48e0bSAndroid Build Coastguard Worker }
2592*08b48e0bSAndroid Build Coastguard Worker
2593*08b48e0bSAndroid Build Coastguard Worker case MUT_AUTO_EXTRA_INSERT: {
2594*08b48e0bSAndroid Build Coastguard Worker
2595*08b48e0bSAndroid Build Coastguard Worker if (unlikely(!afl->a_extras_cnt)) { goto retry_havoc_step; }
2596*08b48e0bSAndroid Build Coastguard Worker
2597*08b48e0bSAndroid Build Coastguard Worker u32 use_extra = rand_below(afl, afl->a_extras_cnt);
2598*08b48e0bSAndroid Build Coastguard Worker u32 extra_len = afl->a_extras[use_extra].len;
2599*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len + extra_len >= max_len)) { goto retry_havoc_step; }
2600*08b48e0bSAndroid Build Coastguard Worker
2601*08b48e0bSAndroid Build Coastguard Worker u8 *ptr = afl->a_extras[use_extra].data;
2602*08b48e0bSAndroid Build Coastguard Worker u32 insert_at = rand_below(afl, len + 1);
2603*08b48e0bSAndroid Build Coastguard Worker
2604*08b48e0bSAndroid Build Coastguard Worker /* Tail */
2605*08b48e0bSAndroid Build Coastguard Worker memmove(buf + insert_at + extra_len, buf + insert_at, len - insert_at);
2606*08b48e0bSAndroid Build Coastguard Worker
2607*08b48e0bSAndroid Build Coastguard Worker /* Inserted part */
2608*08b48e0bSAndroid Build Coastguard Worker memcpy(buf + insert_at, ptr, extra_len);
2609*08b48e0bSAndroid Build Coastguard Worker len += extra_len;
2610*08b48e0bSAndroid Build Coastguard Worker
2611*08b48e0bSAndroid Build Coastguard Worker break;
2612*08b48e0bSAndroid Build Coastguard Worker
2613*08b48e0bSAndroid Build Coastguard Worker }
2614*08b48e0bSAndroid Build Coastguard Worker
2615*08b48e0bSAndroid Build Coastguard Worker case MUT_SPLICE_OVERWRITE: {
2616*08b48e0bSAndroid Build Coastguard Worker
2617*08b48e0bSAndroid Build Coastguard Worker if (unlikely(!splice_buf || !splice_len)) { goto retry_havoc_step; }
2618*08b48e0bSAndroid Build Coastguard Worker
2619*08b48e0bSAndroid Build Coastguard Worker /* overwrite mode */
2620*08b48e0bSAndroid Build Coastguard Worker
2621*08b48e0bSAndroid Build Coastguard Worker u32 copy_from, copy_to, copy_len;
2622*08b48e0bSAndroid Build Coastguard Worker
2623*08b48e0bSAndroid Build Coastguard Worker copy_len = choose_block_len(afl, splice_len - 1);
2624*08b48e0bSAndroid Build Coastguard Worker
2625*08b48e0bSAndroid Build Coastguard Worker if (copy_len > len) copy_len = len;
2626*08b48e0bSAndroid Build Coastguard Worker
2627*08b48e0bSAndroid Build Coastguard Worker copy_from = rand_below(afl, splice_len - copy_len + 1);
2628*08b48e0bSAndroid Build Coastguard Worker copy_to = rand_below(afl, len - copy_len + 1);
2629*08b48e0bSAndroid Build Coastguard Worker memmove(buf + copy_to, splice_buf + copy_from, copy_len);
2630*08b48e0bSAndroid Build Coastguard Worker
2631*08b48e0bSAndroid Build Coastguard Worker break;
2632*08b48e0bSAndroid Build Coastguard Worker
2633*08b48e0bSAndroid Build Coastguard Worker }
2634*08b48e0bSAndroid Build Coastguard Worker
2635*08b48e0bSAndroid Build Coastguard Worker case MUT_SPLICE_INSERT: {
2636*08b48e0bSAndroid Build Coastguard Worker
2637*08b48e0bSAndroid Build Coastguard Worker if (unlikely(!splice_buf || !splice_len)) { goto retry_havoc_step; }
2638*08b48e0bSAndroid Build Coastguard Worker
2639*08b48e0bSAndroid Build Coastguard Worker if (unlikely(len + HAVOC_BLK_XL >= max_len)) { goto retry_havoc_step; }
2640*08b48e0bSAndroid Build Coastguard Worker
2641*08b48e0bSAndroid Build Coastguard Worker /* insert mode */
2642*08b48e0bSAndroid Build Coastguard Worker
2643*08b48e0bSAndroid Build Coastguard Worker u32 clone_from, clone_to, clone_len;
2644*08b48e0bSAndroid Build Coastguard Worker
2645*08b48e0bSAndroid Build Coastguard Worker clone_len = choose_block_len(afl, splice_len);
2646*08b48e0bSAndroid Build Coastguard Worker clone_from = rand_below(afl, splice_len - clone_len + 1);
2647*08b48e0bSAndroid Build Coastguard Worker clone_to = rand_below(afl, len + 1);
2648*08b48e0bSAndroid Build Coastguard Worker
2649*08b48e0bSAndroid Build Coastguard Worker /* Head */
2650*08b48e0bSAndroid Build Coastguard Worker
2651*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf, buf, clone_to);
2652*08b48e0bSAndroid Build Coastguard Worker
2653*08b48e0bSAndroid Build Coastguard Worker /* Inserted part */
2654*08b48e0bSAndroid Build Coastguard Worker
2655*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf + clone_to, splice_buf + clone_from, clone_len);
2656*08b48e0bSAndroid Build Coastguard Worker
2657*08b48e0bSAndroid Build Coastguard Worker /* Tail */
2658*08b48e0bSAndroid Build Coastguard Worker memcpy(tmp_buf + clone_to + clone_len, buf + clone_to, len - clone_to);
2659*08b48e0bSAndroid Build Coastguard Worker
2660*08b48e0bSAndroid Build Coastguard Worker len += clone_len;
2661*08b48e0bSAndroid Build Coastguard Worker memcpy(buf, tmp_buf, len);
2662*08b48e0bSAndroid Build Coastguard Worker
2663*08b48e0bSAndroid Build Coastguard Worker break;
2664*08b48e0bSAndroid Build Coastguard Worker
2665*08b48e0bSAndroid Build Coastguard Worker }
2666*08b48e0bSAndroid Build Coastguard Worker
2667*08b48e0bSAndroid Build Coastguard Worker }
2668*08b48e0bSAndroid Build Coastguard Worker
2669*08b48e0bSAndroid Build Coastguard Worker }
2670*08b48e0bSAndroid Build Coastguard Worker
2671*08b48e0bSAndroid Build Coastguard Worker }
2672*08b48e0bSAndroid Build Coastguard Worker
2673*08b48e0bSAndroid Build Coastguard Worker return len;
2674*08b48e0bSAndroid Build Coastguard Worker
2675*08b48e0bSAndroid Build Coastguard Worker }
2676*08b48e0bSAndroid Build Coastguard Worker
2677*08b48e0bSAndroid Build Coastguard Worker #endif /* !AFL_MUTATIONS_H */
2678*08b48e0bSAndroid Build Coastguard Worker
2679