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