@@ -100,6 +100,81 @@ static uint8_t test_buffer[512] = {
100100 0x13 , 0x13 , 0x13 , 0x13 , 0x13 , 0x13 , 0x13 , 0x13 ,
101101};
102102
103+ static uint8_t test_buffer_with_type [512 ] = {
104+ 'W' , 'O' , 'L' , 'F' , 0x00 , 0x00 , 0x01 , 0x00 ,
105+ 0x01 , 0x00 , 0x04 , 0x00 , 0x0d , 0x0c , 0x0b , 0x0a ,
106+ 0xFF , 0xFF , 0xFF , 0xFF , 0x02 , 0x00 , 0x08 , 0x00 ,
107+ 0x07 , 0x06 , 0x05 , 0x04 , 0x03 , 0x02 , 0x01 , 0x00 ,
108+ 0xFF , 0xFF , 0xFF , 0xFF , 0x04 , 0x00 , 0x02 , 0x00 ,
109+ 0xEE , 0xDD , 0xFF , 0xFF , 0x03 , 0x00 , 0x20 , 0x00 ,
110+ 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 ,
111+ 0x08 , 0x09 , 0x0a , 0x0b , 0x0c , 0x0d , 0x0e , 0x0f ,
112+ 0x10 , 0x11 , 0x12 , 0x13 , 0x14 , 0x15 , 0x16 , 0x17 ,
113+ 0x18 , 0x19 , 0x1a , 0x1b , 0x1c , 0x1d , 0x1e , 0x1f ,
114+ 0x00 , 0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /*<-- end of options */
115+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
116+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
117+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
118+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
119+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
120+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
121+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
122+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
123+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
124+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
125+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
126+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
127+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
128+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
129+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
130+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
131+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
132+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
133+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
134+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
135+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
136+ /* End HDR */
137+ 0x13 , 0x13 , 0x13 , 0x13 , 0x13 , 0x13 , 0x13 , 0x13 ,
138+ };
139+
140+ static uint8_t test_buffer_with_diffbase [512 ] = {
141+ 'W' , 'O' , 'L' , 'F' , 0x00 , 0x00 , 0x01 , 0x00 ,
142+ 0x01 , 0x00 , 0x04 , 0x00 , 0x0d , 0x0c , 0x0b , 0x0a ,
143+ 0xFF , 0xFF , 0xFF , 0xFF , 0x02 , 0x00 , 0x08 , 0x00 ,
144+ 0x07 , 0x06 , 0x05 , 0x04 , 0x03 , 0x02 , 0x01 , 0x00 ,
145+ 0xFF , 0xFF , 0xFF , 0xFF , 0x04 , 0x00 , 0x02 , 0x00 ,
146+ 0xEE , 0xDD , 0xFF , 0xFF , 0x05 , 0x00 , 0x04 , 0x00 ,
147+ 0x04 , 0x03 , 0x02 , 0x01 , 0x03 , 0x00 , 0x20 , 0x00 ,
148+ 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 ,
149+ 0x08 , 0x09 , 0x0a , 0x0b , 0x0c , 0x0d , 0x0e , 0x0f ,
150+ 0x10 , 0x11 , 0x12 , 0x13 , 0x14 , 0x15 , 0x16 , 0x17 ,
151+ 0x18 , 0x19 , 0x1a , 0x1b , 0x1c , 0x1d , 0x1e , 0x1f ,
152+ 0x00 , 0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , /*<-- end of options */
153+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
154+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
155+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
156+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
157+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
158+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
159+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
160+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
161+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
162+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
163+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
164+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
165+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
166+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
167+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
168+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
169+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
170+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
171+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
172+ 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF ,
173+ /* End HDR */
174+ 0x13 , 0x13 , 0x13 , 0x13 , 0x13 , 0x13 , 0x13 , 0x13 ,
175+ };
176+
177+
103178START_TEST (test_parser_sunny )
104179{
105180 uint8_t * p ;
@@ -167,6 +242,24 @@ START_TEST (test_parser_borders)
167242}
168243END_TEST
169244
245+ START_TEST (test_parser_blobs )
246+ {
247+ uint32_t ver ;
248+ uint16_t type ;
249+ ver = wolfBoot_get_blob_version (test_buffer );
250+ fail_unless (ver == 0x0a0b0c0d , "Parser error: version does not match" );
251+
252+ type = wolfBoot_get_blob_type (test_buffer_with_type );
253+ fail_unless (type == 0xDDEE , "Wrong image type" );
254+
255+ type = wolfBoot_get_blob_type (test_buffer );
256+ fail_unless (type == 0 , "Reading non-existing version: failed to report error" );
257+ ver = wolfBoot_get_blob_diffbase_version (test_buffer_with_diffbase );
258+ fail_unless (ver == 0x01020304 , "Wrong delta base version parsed" );
259+
260+ }
261+ END_TEST
262+
170263Suite * wolfboot_suite (void )
171264{
172265
@@ -176,15 +269,19 @@ Suite *wolfboot_suite(void)
176269 /* Test cases */
177270 TCase * parser_sunny = tcase_create ("Parser Sunny-day case" );
178271 TCase * parser_borders = tcase_create ("Parser test buffer borders" );
272+ TCase * parser_blobs = tcase_create ("Parser test blobs" );
273+
179274
180275 /* Test function <-> Test case */
181276 tcase_add_test (parser_sunny , test_parser_sunny );
182277 tcase_add_test (parser_borders , test_parser_borders );
278+ tcase_add_test (parser_blobs , test_parser_blobs );
183279
184280 /* Set parameters + add to suite */
185281 tcase_set_timeout (parser_sunny , 20 );
186282 suite_add_tcase (s , parser_sunny );
187283 suite_add_tcase (s , parser_borders );
284+ suite_add_tcase (s , parser_blobs );
188285
189286 return s ;
190287}
0 commit comments