1 /*
2  * Copyright (c) 2020 Nordic Semiconductor ASA
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include <zephyr/ztest.h>
8 #include "pet_decode.h"
9 #include "serial/serial_recovery_decode.h"
10 
11 uint8_t serial_rec_input1[] = {
12 	/* "data" */
13 	0xa5, 0x64, 0x64, 0x61, 0x74, 0x61, 0x59, 0x01,
14 	0x29, 0x3d, 0xb8, 0xf3, 0x96, 0x00, 0x00, 0x00,
15 	0x00, 0x00, 0x02, 0x00, 0x00, 0xdc, 0x37, 0x00,
16 
17 	/* 280 zeros */
18 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
19 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
20 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
21 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
22 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
23 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
24 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
25 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
26 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
27 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
28 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
29 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
31 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
32 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
33 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
36 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
38 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
40 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
41 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
42 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53 
54 	0x00, 0x00, /* "image" */ 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65,
55 	0x00, /* "len" */ 0x63, 0x6c, 0x65, 0x6e, 0x19, 0x3b, 0x2c,
56 	/* "off" */ 0x63, 0x6f, 0x66, 0x66, 0x00, /* "sha" */ 0x63, 0x73, 0x68,
57 	0x61, 0x58, 0x20, 0x12, 0x87, 0x4f, 0xfe, 0x60,
58 	0x5b, 0xe0, 0x63, 0x1a, 0x03, 0x5a, 0xa2, 0x11,
59 	0xb4, 0x3e, 0x0f, 0xb0, 0x20, 0x42, 0x0f, 0xc4,
60 	0x31, 0xa7, 0xf1, 0x1a, 0x6a, 0xd3, 0x44, 0x4c,
61 	0x71, 0x99, 0x75
62 };
63 
64 
65 uint8_t serial_rec_input2[] = {
66 	/* "data" */
67 	0xa5, 0x64, 0x64, 0x61, 0x74, 0x61, 0x59, 0x01,
68 	0x29, 0x3d, 0xb8, 0xf3, 0x96, 0x00, 0x00, 0x00,
69 	0x00, 0x00, 0x02, 0x00, 0x00, 0x90, 0x2c, 0x00,
70 	0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
71 
72 	/* 11 zeros */
73 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
74 	0x00, 0x00, 0x00,
75 
76 	/* 265 0xffs */
77 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
78 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
79 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
80 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
81 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
82 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
83 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
84 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
85 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
86 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
87 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
88 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
89 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
90 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
91 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
92 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
93 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
94 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
95 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
96 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
97 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
98 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
99 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
100 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
101 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
102 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
103 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
104 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
105 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
106 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
107 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
108 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
109 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
110 	0xff,
111 
112 	/* "image" */
113 	0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x00, /* "len" */ 0x63,
114 	0x6c, 0x65, 0x6e, 0x19, 0x2f, 0xe0, /* "off" */ 0x63, 0x6f,
115 	0x66, 0x66, 0x00, /* "sha" */ 0x63, 0x73, 0x68, 0x61, 0x58,
116 	0x20, 0x1d, 0x4f, 0x47, 0xe6, 0xdf, 0x78, 0xad,
117 	0x34, 0xe2, 0xd2, 0x8f, 0xc6, 0x7b, 0x3f, 0x26,
118 	0xff, 0x3c, 0x73, 0x44, 0x93, 0x13, 0x32, 0x7b,
119 	0x27, 0x15, 0xfa, 0x1d, 0x6e, 0x21, 0x82, 0xcb,
120 	0xfb
121 };
122 
123 /* Test vector discovered via fuzzing with AFL. */
124 uint8_t crash_vector0[] = {
125 	0xd8, 0x30, 0xa2, 0x01, 0x56, 0x85, 0x94, 0x41, 0xe6, 0x42, 0x81, 0x01,
126 	0x4a, 0x8f, 0x7a, 0xd4, 0xf4, 0xd4, 0xd4, 0xd4, 0x7f, 0xff, 0xff, 0xff,
127 	0x01, 0x01, 0x01
128 };
129 
130 /* Test vector discovered via fuzzing with AFL. */
131 uint8_t crash_vector1[] = {
132 	0xd8, 0x30, 0xa2, 0x01, 0x56, 0x85, 0x94, 0x49, 0xaa, 0x7a, 0x20, 0x98,
133 	0x44, 0xec, 0x38, 0x98, 0x5d, 0x21, 0x42, 0x81, 0x00, 0x00, 0x00, 0x00,
134 	0x04, 0x8f, 0xf3
135 };
136 
137 /* Test vector discovered via fuzzing with AFL. */
138 uint8_t crash_vector2[] = {
139 	0xd8, 0x30, 0xa2, 0x01, 0x56, 0x85, 0x94, 0x49, 0xaa, 0xff, 0x7f, 0x01,
140 	0x5a, 0x85, 0xff, 0xa1, 0x5d, 0x21, 0x23, 0x81, 0x00, 0x00, 0xa1, 0x5d,
141 	0x21, 0x23, 0x81, 0x00, 0x00, 0x00, 0x04, 0x8f, 0xf3
142 };
143 
144 /* Test vector discovered via fuzzing with AFL. */
145 uint8_t crash_vector3[] = {
146 	0xd8, 0x30, 0xa2, 0x01, 0x56, 0x85, 0x94, 0x49, 0xa2, 0x01, 0x5a, 0x00,
147 	0x5a, 0xa1, 0x19, 0x98, 0x5d, 0xd8, 0x30, 0xa2, 0x01, 0x48, 0x21, 0x42,
148 	0x81, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8f, 0xf3
149 };
150 
151 /* Test vector discovered via fuzzing with AFL. */
152 uint8_t crash_vector4[] = {
153 	0xd8, 0x30, 0xa2, 0x01, 0x56, 0x85, 0x94, 0x44, 0xaa, 0x98, 0x20, 0x01,
154 	0x4a, 0x8f, 0x98, 0x98, 0x7a, 0x98, 0x98, 0x98, 0x95, 0x98, 0x98, 0xff,
155 	0x01, 0x03, 0x01
156 };
157 
158 /* Test vector discovered via fuzzing with AFL. */
159 uint8_t crash_vector5[] = {
160 	0xd8, 0x30, 0xa2, 0x01, 0x56, 0x85, 0x92, 0x51, 0xaa, 0x9e, 0x9e, 0x9e,
161 	0x9a, 0x9e, 0x9e, 0x9e, 0x85, 0x92, 0x5a, 0xac, 0x98, 0x20, 0x98, 0x44,
162 	0x9e, 0x9e, 0x9e, 0x9e, 0x56, 0x56, 0x9e, 0x9e, 0x92, 0x51, 0xaa, 0x98,
163 	0x20, 0x98, 0x44, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
164 	0x9e, 0x9e, 0x9e, 0x9a, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x00, 0x00, 0x00,
165 	0xff, 0x00, 0x00, 0x00, 0x04, 0x8f, 0xf3
166 };
167 
168 /* Test vector discovered via fuzzing with AFL. */
169 uint8_t crash_vector6[] = {
170 	0xd8, 0x30, 0xa2, 0x01, 0x56, 0x85, 0x94, 0x41, 0xc6, 0x42, 0x8e, 0x01,
171 	0x4e, 0x8f, 0xd8, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0x7f, 0x7a, 0xff, 0xff,
172 	0xfe, 0xfe, 0x01
173 };
174 
175 /* Test vector discovered via fuzzing with AFL. */
176 uint8_t crash_vector7[] = {
177 	0xd8, 0x30, 0xa2, 0x01, 0x56, 0x85, 0x94, 0x51, 0x98, 0x98, 0x98, 0x98,
178 	0x7a, 0x67, 0xa9, 0x98, 0x98, 0x98, 0x98, 0x98, 0xf0, 0x00, 0x00, 0x00,
179 	0x92, 0x30, 0xf3
180 };
181 
182 /* Test vector discovered via fuzzing with AFL. */
183 uint8_t crash_vector8[] = {
184 	0xd8, 0x30, 0xa2, 0x01, 0x56, 0x85, 0x94, 0x52, 0xe6, 0x42, 0x81, 0x01,
185 	0x48, 0x8f, 0x87, 0x5a, 0x98, 0xff, 0xff, 0xff, 0xe7, 0xd4, 0xd4, 0x9b,
186 	0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0xaa, 0x00, 0x20, 0x9f, 0xb7,
187 	0xec, 0x38, 0x98, 0xfe, 0x81, 0x42, 0x63, 0xf0, 0x00, 0x00, 0x00, 0x7f,
188 	0x30, 0xf3
189 };
190 
191 /* Test vector discovered via fuzzing with AFL. */
192 uint8_t crash_vector9[] = {
193 	0xd8, 0x30, 0xb8, 0xa2, 0x02, 0x58, 0x73, 0x82, 0x58, 0x24, 0x82, 0x02,
194 	0x58, 0x20, 0x5c, 0x01, 0x7e, 0xf6, 0x4b, 0xf3, 0xbb, 0x9b, 0x49, 0x4e,
195 	0x71, 0xe1, 0xf2, 0x41, 0x8e, 0xef, 0x8d, 0x46, 0x6c, 0xc9, 0x02, 0xf6,
196 	0x39, 0xa8, 0x55, 0xec, 0x9a, 0xf3, 0xe9, 0xed, 0xdb, 0x99, 0x58, 0x4a,
197 	0xb2, 0x82, 0x43, 0xa1, 0x01, 0x26, 0xa0, 0xf6, 0x7a, 0x40, 0xa1, 0xa5,
198 	0x03, 0x58, 0x6f, 0xa2, 0x02, 0x81, 0x81, 0x41, 0x00, 0x04, 0x58, 0x56,
199 	0x89, 0x14, 0xa4, 0x01, 0x50, 0xfa, 0x6b, 0x4a, 0x53, 0xd5, 0xad, 0x5f,
200 	0xdf, 0xdd, 0x9d, 0xe6, 0x63, 0xe4, 0xd4, 0x1f, 0xfe, 0x02, 0x00, 0x04,
201 	0x00, 0x00, 0x14, 0x25, 0x69, 0x5e, 0x48, 0xbf, 0x42, 0x9b, 0x2d, 0x51,
202 	0xf2, 0xab, 0x45, 0x03, 0x58, 0x24, 0x82, 0x02, 0x58, 0xfe, 0xff, 0x11,
203 	0x22, 0x33, 0x44, 0x55
204 };
205 
206 /* Test vector discovered via fuzzing with AFL. */
207 uint8_t crash_vector10[] = {
208 	0xd8, 0x30, 0xb8, 0xa2, 0x02, 0x58, 0x73, 0x82, 0x58, 0x24, 0x82, 0x02,
209 	0x58, 0x20, 0x5c, 0x01, 0x7e, 0xf6, 0x4b, 0xf3, 0xbb, 0x9b, 0x49, 0x4e,
210 	0x71, 0xe1, 0xf2, 0x41, 0x8e, 0xef, 0x8d, 0x46, 0x5d, 0x5d, 0x5d, 0x5d,
211 	0x5d, 0x9a, 0xf3, 0xe9, 0xed, 0xdb, 0x99, 0x9b, 0x2d, 0x51, 0x58, 0x4a,
212 	0xd2, 0x84, 0x43, 0xa1, 0x01, 0xf6, 0x58, 0x40, 0x8f, 0x95, 0x45, 0x8e,
213 	0x98, 0x98, 0x82, 0xa1, 0x9f, 0xd1, 0x0c, 0x3c, 0x17, 0xbe, 0xed, 0x32,
214 	0x1c, 0xec, 0xe7, 0x42, 0x3d, 0xfb, 0x48, 0xc4, 0x57, 0xb8, 0xf1, 0xf6,
215 	0xac, 0x83, 0x57, 0x7a, 0x3c, 0x10, 0xc6, 0x77, 0x3f, 0x6f, 0x3a, 0x79,
216 	0x02, 0x37, 0x6b, 0x59, 0x54, 0x09, 0x20, 0xb6, 0xc5, 0xf5, 0x7b, 0xac,
217 	0x5f, 0xc8, 0x54, 0x3d, 0x8f, 0x5d, 0x3d, 0x97, 0x4f, 0xaa, 0x2e, 0x6d,
218 	0x03, 0xda, 0xa5, 0x34, 0x43, 0x82, 0x03, 0xb4, 0x43, 0xa7, 0x03, 0x58,
219 	0x71, 0xa5, 0x01, 0x01, 0x01, 0xfe, 0x03, 0x58, 0x5f, 0xa2, 0x02, 0x81,
220 	0x81, 0x41, 0x00, 0x04, 0x58, 0x56, 0x86, 0x14, 0xa4, 0x01, 0x50, 0xfa,
221 	0x6b, 0x4a, 0x53, 0xd5, 0xad, 0x5f, 0xdf, 0xbe, 0x9d, 0xe6, 0x63, 0xe4,
222 	0xac, 0xd4, 0x1f, 0xfe, 0x02, 0x48, 0x8f, 0x87, 0x50, 0x14, 0x92, 0xaf,
223 	0x14, 0x25, 0x69, 0x5e, 0x48, 0xbf, 0x42, 0x9b, 0x2d, 0x51, 0xf2, 0xab,
224 	0x45, 0x03, 0x58, 0x24, 0x82, 0x02, 0x58, 0x20, 0x00, 0x11, 0x22, 0x33,
225 	0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
226 	0x01, 0x23, 0x48, 0x8f, 0x87, 0x3b, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe,
227 	0xdc, 0xba, 0xb6, 0x76, 0x54, 0x32, 0x10, 0x0e, 0x19, 0x87, 0x48, 0x8f,
228 	0x87, 0xd0, 0x01, 0x0f, 0x02, 0x0f, 0x0a, 0x43, 0x82, 0x03, 0x0f
229 };
230 
231 /* Test vector discovered via fuzzing with AFL. */
232 uint8_t crash_vector11[] = {
233 	0xd8, 0x30, 0xb8, 0xa2, 0x02, 0x58, 0x73, 0x82, 0x58, 0x24, 0x82, 0x02,
234 	0x58, 0x20, 0x5c, 0x01, 0x7e, 0xf6, 0x4b, 0xf3, 0x44, 0x55, 0x66, 0x77,
235 	0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x01, 0x23, 0x48, 0x8f,
236 	0x87, 0x3b, 0x67, 0x89, 0xab, 0xcd, 0x99, 0x9b, 0x2d, 0x51, 0x58, 0x4a,
237 	0xd2, 0x84, 0x43, 0xa1, 0x01, 0x26, 0xa0, 0xf6, 0x58, 0x24, 0xa1, 0x9f,
238 	0xd1, 0xf2, 0x3b, 0x17, 0xbe, 0x48, 0x48, 0x8f, 0x87, 0x48, 0x8f, 0x87,
239 	0x3a, 0x79, 0x02, 0x37, 0x6b, 0x59, 0x54, 0x09, 0x20, 0xb6, 0xc5, 0xf5,
240 	0x7b, 0xac, 0x5f, 0x21, 0x54, 0x3d, 0x8f, 0x5d, 0x3d, 0x97, 0x4f, 0xaa,
241 	0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a,
242 	0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a,
243 	0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x2e, 0x6d, 0x03, 0xda,
244 	0xa5, 0x34, 0xb4, 0x43, 0xa7, 0x03, 0x58, 0x48, 0x8f, 0x87, 0x01, 0x02,
245 	0x00, 0x03, 0x48, 0x5f, 0xa2, 0x02, 0x81, 0x81, 0x41, 0x00, 0x04, 0x58,
246 	0x56, 0x00, 0x00, 0x00, 0x80, 0x50, 0xfa, 0x6b, 0x4a, 0x53, 0xd5, 0xad,
247 	0x5f, 0xdf, 0xbe, 0x9d, 0xe6, 0x72, 0xe4, 0xac, 0xd4, 0x1f, 0xfe, 0x02,
248 	0x48, 0x8f, 0x87, 0x50, 0x14, 0x97, 0xaf, 0x14, 0x25, 0x69, 0x48, 0x8f,
249 	0x87, 0x5e, 0x48, 0xbf, 0x42, 0x48, 0x8f, 0x87, 0xf2, 0xab, 0x45, 0x03,
250 	0x58, 0x24, 0x82, 0x02, 0x58, 0x20, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55,
251 	0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x01, 0x23,
252 	0x48, 0x8f, 0x87, 0x3b, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba,
253 	0x98, 0x76, 0x54, 0x32, 0x10, 0x0e, 0x19, 0x87, 0xd0, 0x01, 0x0f, 0x02,
254 	0x0f, 0x00, 0x01, 0x00, 0x00, 0x0f
255 };
256 
257 /* Test vector discovered via fuzzing with AFL. */
258 uint8_t crash_vector12[] = {
259 	0xd8, 0x30, 0xb8, 0xa2, 0x02, 0x58, 0x73, 0x82, 0x58, 0x24, 0x82, 0x02,
260 	0x58, 0x20, 0x5c, 0x01, 0x7e, 0xf6, 0x4b, 0xf3, 0xbb, 0x9b, 0x49, 0x4e,
261 	0x71, 0xe1, 0xf2, 0x41, 0x8e, 0xef, 0x8d, 0x46, 0x5d, 0x5d, 0x5d, 0x5d,
262 	0x5d, 0x9a, 0xf3, 0xe9, 0xed, 0xdb, 0x99, 0x9b, 0x2d, 0x51, 0x58, 0x4a,
263 	0xd2, 0x84, 0x43, 0xa1, 0x01, 0x26, 0xa0, 0xf6, 0x58, 0x40, 0xa1, 0x9f,
264 	0xd1, 0xf2, 0x3b, 0x17, 0xbe, 0xed, 0x32, 0x1c, 0xec, 0xe7, 0x42, 0x3d,
265 	0xfb, 0x48, 0xc4, 0x57, 0xb8, 0xf1, 0xf6, 0xac, 0x83, 0x57, 0x7a, 0x3c,
266 	0x10, 0xc6, 0x77, 0x3f, 0x6f, 0x3a, 0x79, 0x02, 0x37, 0x6b, 0x59, 0x54,
267 	0x09, 0x20, 0xb6, 0xc5, 0xf5, 0x7b, 0xac, 0x5f, 0xc8, 0x54, 0x3d, 0x8f,
268 	0x5d, 0x3d, 0x97, 0x4f, 0xaa, 0x2e, 0x6d, 0x03, 0xda, 0xa5, 0x34, 0xb4,
269 	0x43, 0xa7, 0x03, 0x58, 0x71, 0xa5, 0x01, 0x01, 0x02, 0x00, 0x03, 0x58,
270 	0x5f, 0xa2, 0x02, 0x81, 0x81, 0x41, 0x00, 0x04, 0x58, 0x56, 0x86, 0x14,
271 	0xa4, 0x12, 0x50, 0x7a, 0x6b, 0x4a, 0x53, 0xd5, 0xad, 0x5f, 0xdf, 0xbe,
272 	0x9d, 0xe6, 0x63, 0xe4, 0xac, 0xd4, 0x1f, 0xfe, 0x02, 0x48, 0x8f, 0x87,
273 	0x50, 0x14, 0x92, 0xaf, 0x14, 0x25, 0x69, 0x5e, 0x48, 0xbf, 0x42, 0x9b,
274 	0x2d, 0x51, 0xf2, 0xab, 0x45, 0x03, 0x58, 0x24, 0x82, 0x02, 0x58, 0x20,
275 	0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
276 	0xcc, 0xdd, 0xee, 0xff, 0x01, 0x23, 0x48, 0x8f, 0x87, 0x3b, 0x67, 0x89,
277 	0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x0e,
278 	0x19, 0x87, 0xd0, 0x01, 0x0f, 0x02, 0x0f, 0x0a, 0x43, 0x82, 0x03, 0x0f
279 };
280 
281 /* Test vector discovered via fuzzing with AFL. */
282 uint8_t crash_vector13[] = {
283 	0xd8, 0x30, 0xb8, 0xa2, 0x02, 0x58, 0x86, 0x82, 0x58, 0x24, 0x82, 0x02,
284 	0x58, 0x20, 0x5c, 0x01, 0x7e, 0xf6, 0x4b, 0xf3, 0xbb, 0x9b, 0x49, 0x10,
285 	0x00, 0xe1, 0xe2, 0x41, 0x8e, 0xef, 0x8d, 0x46, 0x5d, 0x5d, 0x5d, 0x5d,
286 	0x5d, 0x9a, 0xf3, 0xe9, 0xed, 0x01, 0x99, 0x9b, 0x2d, 0x45, 0x58, 0x4a,
287 	0xd2, 0x84, 0x43, 0xa1, 0x48, 0xc4, 0x57, 0xb8, 0xf1, 0xf6, 0xac, 0x83,
288 	0x34, 0x7a, 0x3c, 0x10, 0xc6, 0x77, 0x3f, 0x6f, 0x58, 0x24, 0x82, 0x37,
289 	0x6b, 0x59, 0x54, 0x09, 0x58, 0x40, 0xa1, 0x9f, 0xd1, 0xf2, 0x3b, 0x17,
290 	0xbe, 0xed, 0x32, 0x1c, 0xec, 0xe7, 0x42, 0x3d, 0xde, 0x48, 0xc4, 0x57,
291 	0xb8, 0xf1, 0xf6, 0xac, 0x83, 0x34, 0x7a, 0x3c, 0x10, 0xc6, 0x77, 0x3f,
292 	0x6f, 0x58, 0x24, 0x82, 0x37, 0x6b, 0x59, 0x54, 0x09, 0x20, 0xb6, 0xc5,
293 	0xf5, 0x7b, 0x71, 0xa5, 0x01, 0x01, 0x02, 0x00, 0x03, 0x58, 0x5f, 0xa2,
294 	0x02, 0x81, 0x81, 0x41, 0x00, 0x04, 0x58, 0x56, 0x86, 0x14, 0xa4, 0x03,
295 	0x50, 0x33, 0x6b, 0xfe, 0x02, 0x48, 0x8f, 0x87, 0x50, 0x14, 0x92, 0xaf,
296 	0x14, 0x25, 0x69, 0x5e, 0x48, 0xbf, 0x42, 0x9b, 0x2d, 0x51, 0xf2, 0xab,
297 	0x45, 0x03, 0x58, 0x24, 0x82, 0x02, 0x58, 0x20, 0x00, 0x58, 0x98, 0x76,
298 	0x54, 0x32, 0x10, 0x0e, 0x19, 0x87, 0xd0, 0x01, 0x0f, 0x02, 0x0f, 0x0a,
299 	0x43, 0x82, 0x03, 0x0f
300 };
301 
302 /* Test vector discovered via fuzzing with AFL. */
303 uint8_t crash_vector14[] = {
304 	0xd8, 0x30, 0xb8, 0xa2, 0x02, 0x58, 0x73, 0x82, 0x58, 0x24, 0x82, 0x02,
305 	0x58, 0x20, 0x5c, 0x01, 0x7e, 0xf6, 0x4b, 0xf3, 0xbb, 0x9b, 0x49, 0x4e,
306 	0x71, 0xe1, 0xf2, 0x41, 0x8e, 0xef, 0x8d, 0x46, 0x5d, 0x5d, 0x5d, 0x5d,
307 	0x5d, 0x9a, 0xf3, 0xe9, 0xed, 0xdb, 0x99, 0x9b, 0x2d, 0x51, 0x58, 0x4a,
308 	0xd2, 0x84, 0x43, 0xa1, 0x01, 0x26, 0xa0, 0xf6, 0x58, 0x40, 0xa1, 0x9f,
309 	0xd1, 0xf2, 0x3b, 0x17, 0xbe, 0xed, 0x32, 0x1c, 0xec, 0xe7, 0x42, 0x3d,
310 	0xfb, 0x48, 0xc4, 0x57, 0xb8, 0xf1, 0xf6, 0xac, 0x83, 0x57, 0x7a, 0x3c,
311 	0x10, 0xc6, 0x77, 0x3f, 0x6f, 0x3a, 0x79, 0x02, 0x37, 0x6b, 0x59, 0x54,
312 	0x09, 0x20, 0xb6, 0xc5, 0xf5, 0x7b, 0xac, 0x5f, 0xc8, 0x54, 0x3d, 0x8f,
313 	0x5d, 0x3d, 0x97, 0x4f, 0xaa, 0x2e, 0x6d, 0x03, 0xda, 0xa5, 0x34, 0xb4,
314 	0x43, 0xa7, 0x03, 0x58, 0x71, 0xa5, 0x01, 0x01, 0x02, 0x00, 0x03, 0x58,
315 	0x5f, 0xa2, 0x02, 0x81, 0x81, 0x41, 0x00, 0x04, 0x58, 0x56, 0x86, 0x14,
316 	0xa4, 0x01, 0x51, 0xfa, 0x6b, 0x4a, 0x53, 0xd5, 0xad, 0x5f, 0xdf, 0xbe,
317 	0x9d, 0xe6, 0x63, 0xe4, 0xac, 0xd4, 0x1f, 0xfe, 0x12, 0x48, 0x7a, 0x87,
318 	0x50, 0x14, 0x92, 0xaf, 0x14, 0x25, 0x69, 0x5e, 0x48, 0xbf, 0x42, 0x9b,
319 	0x2d, 0x51, 0xf2, 0xab, 0x45, 0x03, 0x58, 0x24, 0x82, 0x02, 0x58, 0x20,
320 	0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
321 	0xcc, 0xdd, 0xee, 0xff, 0x01, 0x23, 0x48, 0x8f, 0x87, 0x3b, 0x67, 0x89,
322 	0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x0e,
323 	0x19, 0x87, 0xd0, 0x01, 0x0f, 0x02, 0x0f, 0x0a, 0x43, 0x82, 0x03, 0x0f
324 };
325 
326 /* Test vector discovered via fuzzing with AFL. */
327 uint8_t crash_vector15[] = {
328 	0xd8, 0x30, 0xb8, 0xa2, 0x02, 0x58, 0x73, 0x82, 0x58, 0x24, 0x82, 0x02,
329 	0x58, 0x20, 0x5c, 0x01, 0x7e, 0xf6, 0x4b, 0xf3, 0xbb, 0x9b, 0x49, 0x4e,
330 	0x71, 0xe1, 0xf2, 0x41, 0x8e, 0xef, 0x8d, 0x46, 0x5d, 0x00, 0x00, 0x7f,
331 	0xff, 0x9a, 0xf3, 0xe9, 0xed, 0xdb, 0x99, 0x9b, 0x2d, 0x51, 0x58, 0x4a,
332 	0xd2, 0x84, 0x43, 0xfb, 0x48, 0xc4, 0x57, 0xb8, 0xf1, 0xf6, 0xac, 0x83,
333 	0x3f, 0x7a, 0x3c, 0x10, 0xbd, 0x77, 0x3f, 0x6f, 0x3a, 0x79, 0x02, 0x37,
334 	0x6b, 0x59, 0x54, 0x09, 0x20, 0xb6, 0xc5, 0xf5, 0x7b, 0xac, 0x5f, 0xc8,
335 	0x54, 0x3d, 0x8f, 0x5d, 0x3d, 0x97, 0x4f, 0xaa, 0x2e, 0x6d, 0x03, 0xda,
336 	0xa5, 0x34, 0xb4, 0x43, 0xa7, 0x03, 0x58, 0x71, 0xa5, 0x01, 0x01, 0x02,
337 	0x00, 0x03, 0x58, 0x5f, 0xff, 0x7f, 0x00, 0x00, 0x41, 0x00, 0x04, 0x58,
338 	0x56, 0x86, 0x14, 0xa4, 0x01, 0x50, 0xfa, 0x6b, 0x4a, 0x53, 0xd5, 0xad,
339 	0x5f, 0xdf, 0xbe, 0x9d, 0x80, 0xff, 0xe4, 0xac, 0xd4, 0x1f, 0x18, 0x18,
340 	0x48, 0x8f, 0x87, 0x50, 0x14, 0x92, 0xaf, 0x14, 0x25, 0x69, 0x5e, 0x48,
341 	0xbf, 0x42, 0x9b, 0x2d, 0x51, 0xf2, 0xab, 0x00, 0x00, 0x58, 0x24, 0x82,
342 	0x02, 0x58, 0x80, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
343 	0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x01, 0x23, 0x48, 0x8f, 0x87,
344 	0x3b, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54,
345 	0x32, 0x10, 0x0e, 0x19, 0x87, 0xd0, 0x01, 0x0f, 0x02, 0x0f, 0x0a, 0x43,
346 	0x82, 0x03, 0x0f
347 };
348 
349 /* Test vector discovered via fuzzing with AFL. */
350 uint8_t crash_vector16[] = {
351 	0xd8, 0x30, 0xb8, 0xa2, 0x02, 0x58, 0x73, 0x82, 0x58, 0x24, 0x82, 0x02,
352 	0x58, 0x20, 0x5c, 0x01, 0x7e, 0xf6, 0x4b, 0xf1, 0xbb, 0x9b, 0x49, 0x4e,
353 	0x71, 0xe1, 0xf2, 0x41, 0x8e, 0xef, 0x8d, 0x46, 0x5d, 0x5d, 0x5d, 0x5d,
354 	0x5d, 0x9a, 0xf3, 0xe9, 0xed, 0xdb, 0x99, 0x9b, 0x2d, 0x51, 0x58, 0x4a,
355 	0xb0, 0x84, 0x43, 0xa1, 0x01, 0x26, 0xa0, 0xf6, 0x52, 0x40, 0xa1, 0x9f,
356 	0xd1, 0xf2, 0x3b, 0x17, 0xbe, 0xed, 0x32, 0x1c, 0xec, 0xe7, 0x42, 0x3d,
357 	0xfb, 0x48, 0xc4, 0x57, 0xb8, 0xf1, 0x05, 0xff, 0xff, 0x05, 0x7a, 0x3c,
358 	0x10, 0xc6, 0x77, 0x3f, 0x6f, 0x3a, 0x79, 0x02, 0x37, 0x6b, 0x59, 0x54,
359 	0x09, 0x20, 0xb6, 0xc5, 0xf5, 0x7b, 0xac, 0x5f, 0xc8, 0x54, 0x3d, 0x8f,
360 	0x5d, 0x3d, 0x97, 0x4f, 0xaa, 0x2e, 0x6d, 0x03, 0xda, 0xa5, 0x34, 0xb4,
361 	0x43, 0xa7, 0x03, 0x58, 0x71, 0xa5, 0x01, 0x01, 0x02, 0x00, 0x03, 0x58,
362 	0x5f, 0x00, 0x00, 0x00, 0x64, 0x41, 0x00, 0x08, 0x98, 0x56, 0x86, 0x14,
363 	0xa4, 0x01, 0x50, 0xfa, 0x6b, 0x4a, 0x53, 0xd5, 0xad, 0x5f, 0xdf, 0xbe,
364 	0x9d, 0xe6, 0x63, 0xe4, 0xac, 0xd4, 0x1f, 0x0f, 0x03, 0x48, 0x8f, 0x87,
365 	0x50, 0x14, 0x92, 0xaf, 0x14, 0x55, 0x69, 0x5e, 0x48, 0xbf, 0x42, 0x9b,
366 	0x2d, 0x51, 0xf2, 0xab, 0x45, 0x03, 0x58, 0x24, 0x82, 0x02, 0x58, 0x20,
367 	0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x70, 0x99, 0xaa, 0xbb,
368 	0xcc, 0xdd, 0xee, 0xff, 0x01, 0x23, 0x48, 0x8f, 0x87, 0x3b, 0x67, 0x89,
369 	0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x0e,
370 	0x19, 0x87, 0xd0, 0x01, 0x0f, 0x02, 0x0f, 0x0a, 0x43, 0x82, 0x03, 0x0f
371 };
372 
373 /* Test vector discovered via fuzzing with AFL. */
374 uint8_t crash_vector17[] = {
375 	0xd8, 0x30, 0xb8, 0xa2, 0x02, 0x58, 0x73, 0x82, 0x58, 0x24, 0x82, 0x02,
376 	0x58, 0x20, 0x5c, 0x01, 0x7e, 0xf6, 0x4b, 0xf3, 0xbb, 0x9b, 0x49, 0x4e,
377 	0x71, 0xe1, 0xf2, 0x41, 0x8e, 0xef, 0x8d, 0x46, 0x5d, 0x5d, 0x5d, 0x5d,
378 	0x5d, 0x9a, 0xf3, 0xe9, 0xed, 0xdb, 0x99, 0x9b, 0x2d, 0x51, 0x58, 0x4a,
379 	0xd2, 0x57, 0xb8, 0xf1, 0xf6, 0xac, 0x83, 0x3e, 0x7a, 0x3c, 0x10, 0xe8,
380 	0x77, 0x3f, 0x6f, 0x3a, 0x79, 0x02, 0x37, 0x6b, 0x4a, 0x53, 0xd5, 0xad,
381 	0x5f, 0xdf, 0xbe, 0x9d, 0xac, 0x5f, 0xda, 0xa5, 0x34, 0xb4, 0x43, 0xa7,
382 	0x03, 0x58, 0x71, 0xa5, 0x01, 0x01, 0x02, 0x00, 0x03, 0x58, 0x5f, 0xa2,
383 	0x02, 0x81, 0x81, 0x41, 0x00, 0x04, 0x58, 0x56, 0x86, 0x14, 0xa4, 0x12,
384 	0x50, 0x82, 0x6b, 0x4a, 0x53, 0xd5, 0xad, 0x5f, 0xdf, 0xbe, 0x9d, 0xe6,
385 	0x64, 0x1a, 0x00, 0x00, 0xfa, 0xfe, 0x02, 0x48, 0x8f, 0x87, 0x50, 0x14,
386 	0x92, 0xaf, 0x22, 0x25, 0x69, 0x5e, 0x48, 0xbf, 0x42, 0x9b, 0x2d, 0x51,
387 	0x94, 0x41, 0xe6, 0x42, 0x02, 0x58, 0x20, 0x00, 0x11, 0x22, 0x33, 0x44,
388 	0x55, 0x66, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
389 	0x82, 0x82, 0x81, 0xf3, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee,
390 	0xff, 0x01, 0x23, 0x48, 0x8f, 0x87, 0x3b, 0x67, 0x89, 0xab, 0xcd, 0xef,
391 	0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x0e, 0x19, 0x87, 0xd0,
392 	0x01, 0x0f, 0x02, 0x0f, 0x0a, 0x46, 0x82, 0x03, 0x0f
393 };
394 
395 /* Test vector discovered via fuzzing with AFL. */
396 uint8_t crash_vector18[] = {
397 	0xd8, 0x30, 0xa2, 0x01, 0x56, 0x85, 0x99, 0x41, 0xe6, 0x42, 0x81, 0x01,
398 	0x4a, 0xaf, 0xaf, 0x5d, 0x3d, 0x97, 0x5a, 0xff, 0xff, 0x01, 0x7e, 0xf6,
399 	0x77, 0xf3, 0xbb, 0x9b, 0x49, 0x10, 0x00, 0xe1, 0xf2, 0x41, 0x8e, 0xef,
400 	0x8d, 0x46, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x9a, 0xd8, 0x30, 0xed, 0xdb,
401 	0x99, 0x9e, 0x2d, 0x51, 0x58, 0x4a, 0xd2, 0x84, 0x43, 0xa1, 0x0a, 0x26,
402 	0xa0, 0xf6, 0x58, 0x40, 0xa1, 0x9f, 0xd1, 0xf2, 0x3b, 0xff, 0xff, 0xed,
403 	0x32, 0x1c, 0xec, 0xe7, 0x42, 0x3d, 0xfb, 0x48, 0xc4, 0x57, 0xb8, 0xf1,
404 	0x68, 0xac, 0x83, 0x57, 0x7a, 0x3c, 0x10, 0x1c, 0xec, 0xe7, 0x42, 0x3d,
405 	0xfb, 0x48, 0xc4, 0x57, 0xb8, 0xf1, 0x68, 0xac, 0x83, 0x57, 0x7a, 0x3c,
406 	0x10, 0xc6, 0x77, 0x3f, 0x6f, 0x3a, 0x71, 0x02, 0x37, 0x6b, 0x59, 0x54,
407 	0x02, 0x20, 0xb6, 0xc5, 0xf5, 0xff, 0xff, 0xff, 0xff, 0x54, 0x3d, 0x8f,
408 	0xc6, 0x77, 0x3f, 0x6f, 0x3a, 0x71, 0x02, 0x37, 0x6b, 0x59, 0x54, 0x02,
409 	0x20, 0xb6, 0xc5, 0xf5, 0xff, 0xff, 0xff, 0xff, 0x54, 0x3d, 0x8f, 0x5d,
410 	0x3d, 0x97, 0x5a, 0xff, 0xff, 0x6d, 0x03, 0xda, 0xa5, 0x34, 0xb4, 0x43,
411 	0xa7, 0x03, 0x58, 0x71, 0xa5, 0x01, 0x01, 0x02, 0x00, 0x03, 0x58, 0x5f,
412 	0xa2, 0x02, 0x81, 0x81, 0x41, 0x00, 0x04, 0x7f, 0x56, 0x86, 0x14, 0xa4,
413 	0x03, 0x50, 0x33, 0x6b, 0x4a, 0x53, 0xd5, 0xad, 0x5f, 0xdf, 0xbe, 0x9d,
414 	0xe6, 0x63, 0xe4, 0x00, 0x00, 0x1f, 0xfe, 0x02, 0x18, 0x18, 0x05, 0x19,
415 	0x91, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x23,
416 	0x18, 0x18, 0x18, 0x45, 0x03, 0x58, 0x24, 0x82, 0x02, 0x49, 0x20, 0x00,
417 	0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc,
418 	0xdd, 0xee, 0xff, 0x01, 0x23, 0x48, 0x8f, 0x87, 0x3b, 0x67, 0x89, 0xab,
419 	0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0xa2, 0x7f, 0xff, 0x30, 0x8f,
420 	0x95, 0x64, 0x10, 0x00, 0x80, 0xff, 0xff, 0x81, 0xf3, 0x6f, 0x32, 0x10,
421 	0x0e, 0x19, 0x87, 0xd0, 0x01, 0x0f, 0x02, 0x0f, 0xf4, 0x43, 0x82, 0x03,
422 	0xb8
423 };
424 
425 
426 /* This test uses generated code to decode a 'Pet' instance. It constructs a
427  * payload and runs the generated decoding function on the payload. It then
428  * checks that the decoding was successful, and that the resulting struct is
429  * populated correctly.
430  */
ZTEST(cbor_decode_test3,test_pet)431 ZTEST(cbor_decode_test3, test_pet)
432 {
433 	struct Pet pet;
434 	size_t decode_len;
435 	uint8_t input[] = {
436 		0x83, 0x82, 0x63, 0x66, 0x6f, 0x6f, 0x63, 0x62, 0x61, 0x72,
437 		0x48, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
438 		0x02};
439 	zassert_equal(ZCBOR_SUCCESS, cbor_decode_Pet(input, sizeof(input), &pet, &decode_len), "");
440 	zassert_equal(sizeof(input), decode_len, NULL);
441 
442 	uint8_t exp_birthday[] = {1,2,3,4,5,6,7,8};
443 
444 	zassert_equal(2, pet.names_count, "Expect 2 names");
445 	zassert_mem_equal("foo", pet.names[0].value, 3, "Expect first name 'foo'");
446 	zassert_mem_equal("bar", pet.names[1].value, 3, "Expect first name 'bar'");
447 	zassert_equal(8, pet.birthday.len, "Expect len 8 birthday");
448 	zassert_mem_equal(exp_birthday, pet.birthday.value, 8, "Expect birthday");
449 	zassert_equal(Pet_species_dog_c, pet.species_choice, "Expect dog");
450 }
451 
452 
453 bool fuzz_one_input(const uint8_t *data, size_t size);
454 
455 #define FUZZ(x) fuzz_one_input(x, sizeof(x))
456 
457 /* Run test cases discovered via fuzzing. */
ZTEST(cbor_decode_test3,test_pet_regression)458 ZTEST(cbor_decode_test3, test_pet_regression)
459 {
460 	FUZZ(crash_vector0);
461 	FUZZ(crash_vector1);
462 	FUZZ(crash_vector2);
463 	FUZZ(crash_vector3);
464 	FUZZ(crash_vector4);
465 	FUZZ(crash_vector5);
466 	FUZZ(crash_vector6);
467 	FUZZ(crash_vector7);
468 	FUZZ(crash_vector8);
469 	FUZZ(crash_vector9);
470 	FUZZ(crash_vector10);
471 	FUZZ(crash_vector11);
472 	FUZZ(crash_vector12);
473 	FUZZ(crash_vector13);
474 	FUZZ(crash_vector14);
475 	FUZZ(crash_vector15);
476 	FUZZ(crash_vector16);
477 	FUZZ(crash_vector17);
478 	FUZZ(crash_vector18);
479 }
480 
ZTEST(cbor_decode_test3,test_serial1)481 ZTEST(cbor_decode_test3, test_serial1)
482 {
483 	struct Upload upload;
484 	size_t decode_len;
485 	int ret = cbor_decode_Upload(serial_rec_input1,
486 			sizeof(serial_rec_input1), &upload, &decode_len);
487 	zassert_equal(ZCBOR_SUCCESS, ret, "decoding failed: %d.", ret);
488 	zassert_equal(sizeof(serial_rec_input1), decode_len, NULL);
489 
490 	zassert_equal(5, upload.members_count,
491 		"expect 5 members");
492 	zassert_equal(Member_data_c, upload.members[0].members
493 		.Member_choice, "expect data 1st");
494 	zassert_equal(Member_image_c, upload.members[1].members
495 		.Member_choice, "expect image 2nd");
496 	zassert_equal(Member_len_c, upload.members[2].members
497 		.Member_choice, "was %d\r\n", upload.members[2].members
498 		.Member_choice);
499 	zassert_equal(Member_off_c, upload.members[3].members
500 		.Member_choice, "expect off 4th");
501 	zassert_equal(Member_sha_c, upload.members[4].members
502 		.Member_choice, "expect sha 5th");
503 }
504 
ZTEST(cbor_decode_test3,test_serial2)505 ZTEST(cbor_decode_test3, test_serial2)
506 {
507 	struct Upload upload;
508 	size_t decode_len;
509 	int ret = cbor_decode_Upload(serial_rec_input2,
510 			sizeof(serial_rec_input2), &upload, &decode_len);
511 	zassert_equal(ZCBOR_SUCCESS, ret, "decoding failed: %d.", ret);
512 	zassert_equal(sizeof(serial_rec_input2), decode_len, NULL);
513 
514 	zassert_equal(5, upload.members_count,
515 		"expect 5 members");
516 	zassert_equal(Member_data_c, upload.members[0].members
517 		.Member_choice, "expect data 1st");
518 	zassert_equal(Member_image_c, upload.members[1].members
519 		.Member_choice, "expect image 2nd");
520 	zassert_equal(Member_len_c, upload.members[2].members
521 		.Member_choice, "expect len 3rd");
522 	zassert_equal(Member_off_c, upload.members[3].members
523 		.Member_choice, "expect off 4th");
524 	zassert_equal(Member_sha_c, upload.members[4].members
525 		.Member_choice, "expect sha 5th");
526 }
527 
528 ZTEST_SUITE(cbor_decode_test3, NULL, NULL, NULL, NULL, NULL);
529