@@ -96,172 +96,6 @@ set_u64_le(uint8_t *dest, uint64_t value)
9696 dest [7 ] = (uint8_t ) ((value >> 56 ) & 0xFF );
9797}
9898
99- static void
100- test_json_struct_metadata_get_blob (void )
101- {
102- int ret ;
103- char metadata [128 ];
104- char * json ;
105- tsk_size_t json_buffer_length ;
106- char * blob ;
107- tsk_size_t blob_length ;
108- uint8_t * bytes ;
109- tsk_size_t metadata_length ;
110- size_t header_length ;
111- size_t json_length ;
112- size_t padding_length ;
113- size_t payload_length ;
114- size_t total_length ;
115- char json_payload [] = "{\"a\":1}" ;
116- uint8_t binary_payload [] = { 0x01 , 0x02 , 0x03 , 0x04 };
117- uint8_t empty_payload [] = { 0 };
118-
119- bytes = (uint8_t * ) metadata ;
120- header_length = 4 + 1 + 8 + 8 ;
121- json_length = strlen (json_payload );
122- padding_length = (8 - ((header_length + json_length ) & 0x07 )) % 8 ;
123- payload_length = sizeof (binary_payload );
124- total_length = header_length + json_length + padding_length + payload_length ;
125- CU_ASSERT_FATAL (total_length <= sizeof (metadata ));
126- memset (metadata , 0 , sizeof (metadata ));
127- bytes [0 ] = 'J' ;
128- bytes [1 ] = 'B' ;
129- bytes [2 ] = 'L' ;
130- bytes [3 ] = 'B' ;
131- bytes [4 ] = 1 ;
132- set_u64_le (bytes + 5 , (uint64_t ) json_length );
133- set_u64_le (bytes + 13 , (uint64_t ) payload_length );
134- memcpy (bytes + header_length , json_payload , json_length );
135- memset (bytes + header_length + json_length , 0 , padding_length );
136- memcpy (bytes + header_length + json_length + padding_length , binary_payload ,
137- payload_length );
138- metadata_length = (tsk_size_t ) total_length ;
139- ret = tsk_json_struct_metadata_get_blob (
140- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
141- CU_ASSERT_EQUAL (ret , 0 );
142- CU_ASSERT_PTR_EQUAL (json , (char * ) bytes + header_length );
143- CU_ASSERT_EQUAL (json + json_buffer_length + padding_length , blob );
144- CU_ASSERT_EQUAL (json_buffer_length , (tsk_size_t ) json_length );
145- if (json_length > 0 ) {
146- CU_ASSERT_EQUAL (memcmp (json , json_payload , json_length ), 0 );
147- }
148- CU_ASSERT_PTR_EQUAL (blob , bytes + header_length + json_length + padding_length );
149- CU_ASSERT_EQUAL (blob_length , (tsk_size_t ) payload_length );
150- CU_ASSERT_EQUAL (memcmp (blob , binary_payload , payload_length ), 0 );
151- CU_ASSERT ((tsk_size_t ) (blob - json ) < json_buffer_length + 8 );
152-
153- payload_length = 0 ;
154- total_length = header_length + json_length + padding_length + payload_length ;
155- CU_ASSERT_FATAL (total_length <= sizeof (metadata ));
156- set_u64_le (bytes + 13 , (uint64_t ) payload_length );
157- metadata_length = (tsk_size_t ) total_length ;
158- ret = tsk_json_struct_metadata_get_blob (
159- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
160- CU_ASSERT_EQUAL (ret , 0 );
161- CU_ASSERT_EQUAL (json + json_buffer_length + padding_length , blob );
162- CU_ASSERT_PTR_EQUAL (json , (char * ) bytes + header_length );
163- CU_ASSERT_EQUAL (json_buffer_length , (tsk_size_t ) json_length );
164- CU_ASSERT_EQUAL (blob_length , (tsk_size_t ) payload_length );
165- CU_ASSERT_PTR_EQUAL (blob , bytes + header_length + json_length + padding_length );
166- CU_ASSERT ((tsk_size_t ) (blob - json ) < json_buffer_length + 8 );
167-
168- json_length = 0 ;
169- payload_length = sizeof (empty_payload );
170- padding_length = (8 - ((header_length + json_length ) & 0x07 )) % 8 ;
171- total_length = header_length + json_length + padding_length + payload_length ;
172- CU_ASSERT_FATAL (total_length <= sizeof (metadata ));
173- set_u64_le (bytes + 5 , (uint64_t ) json_length );
174- set_u64_le (bytes + 13 , (uint64_t ) payload_length );
175- memset (bytes + header_length + json_length , 0 , padding_length );
176- memcpy (bytes + header_length + json_length + padding_length , empty_payload ,
177- payload_length );
178- metadata_length = (tsk_size_t ) total_length ;
179- ret = tsk_json_struct_metadata_get_blob (
180- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
181- CU_ASSERT_EQUAL (ret , 0 );
182- CU_ASSERT_PTR_EQUAL (json , (char * ) bytes + header_length );
183- CU_ASSERT_EQUAL (json_buffer_length , (tsk_size_t ) json_length );
184- CU_ASSERT_EQUAL (blob_length , (tsk_size_t ) payload_length );
185- CU_ASSERT_PTR_EQUAL (blob , bytes + header_length + json_length + padding_length );
186- CU_ASSERT_EQUAL (memcmp (blob , empty_payload , payload_length ), 0 );
187- CU_ASSERT ((tsk_size_t ) (blob - json ) < json_buffer_length + 8 );
188-
189- blob = NULL ;
190- blob_length = 0 ;
191- json = NULL ;
192- json_length = 0 ;
193- metadata_length = header_length - 1 ;
194- ret = tsk_json_struct_metadata_get_blob (
195- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
196- CU_ASSERT_EQUAL (ret , TSK_ERR_JSON_STRUCT_METADATA_TRUNCATED );
197-
198- metadata_length = (tsk_size_t ) total_length ;
199- bytes [0 ] = 'X' ;
200- ret = tsk_json_struct_metadata_get_blob (
201- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
202- CU_ASSERT_EQUAL (ret , TSK_ERR_JSON_STRUCT_METADATA_BAD_MAGIC );
203- bytes [0 ] = 'J' ;
204-
205- bytes [4 ] = 2 ;
206- ret = tsk_json_struct_metadata_get_blob (
207- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
208- CU_ASSERT_EQUAL (ret , TSK_ERR_JSON_STRUCT_METADATA_BAD_VERSION );
209- bytes [4 ] = 1 ;
210-
211- set_u64_le (bytes + 5 , (uint64_t ) json_length + 9 );
212- ret = tsk_json_struct_metadata_get_blob (
213- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
214- CU_ASSERT_EQUAL (ret , TSK_ERR_JSON_STRUCT_METADATA_UNEXPECTED_SIZE );
215- set_u64_le (bytes + 5 , (uint64_t ) json_length );
216-
217- bytes [header_length + 1 ] = 1 ;
218- ret = tsk_json_struct_metadata_get_blob (
219- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
220- CU_ASSERT_EQUAL (ret , TSK_ERR_JSON_STRUCT_METADATA_NONZERO_PADDING );
221- bytes [header_length + 1 ] = 0 ;
222-
223- metadata_length = (tsk_size_t ) (header_length - 1 );
224- ret = tsk_json_struct_metadata_get_blob (
225- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
226- CU_ASSERT_EQUAL (ret , TSK_ERR_JSON_STRUCT_METADATA_TRUNCATED );
227-
228- ret = tsk_json_struct_metadata_get_blob (
229- NULL , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
230- CU_ASSERT_EQUAL (ret , TSK_ERR_BAD_PARAM_VALUE );
231- ret = tsk_json_struct_metadata_get_blob (
232- metadata , metadata_length , NULL , & json_buffer_length , & blob , & blob_length );
233- CU_ASSERT_EQUAL (ret , TSK_ERR_BAD_PARAM_VALUE );
234- ret = tsk_json_struct_metadata_get_blob (
235- metadata , metadata_length , & json , NULL , & blob , & blob_length );
236- CU_ASSERT_EQUAL (ret , TSK_ERR_BAD_PARAM_VALUE );
237- ret = tsk_json_struct_metadata_get_blob (
238- metadata , metadata_length , & json , & json_buffer_length , NULL , & blob_length );
239- CU_ASSERT_EQUAL (ret , TSK_ERR_BAD_PARAM_VALUE );
240- ret = tsk_json_struct_metadata_get_blob (
241- metadata , metadata_length , & json , & json_buffer_length , & blob , NULL );
242- CU_ASSERT_EQUAL (ret , TSK_ERR_BAD_PARAM_VALUE );
243-
244- memset (metadata , 0 , sizeof (metadata ));
245- bytes [0 ] = 'J' ;
246- bytes [1 ] = 'B' ;
247- bytes [2 ] = 'L' ;
248- bytes [3 ] = 'B' ;
249- bytes [4 ] = 1 ;
250- metadata_length = (tsk_size_t ) header_length ;
251-
252- set_u64_le (bytes + 5 , UINT64_MAX - (uint64_t ) header_length + 1 );
253- set_u64_le (bytes + 13 , 0 );
254- ret = tsk_json_struct_metadata_get_blob (
255- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
256- CU_ASSERT_EQUAL (ret , TSK_ERR_JSON_STRUCT_METADATA_INVALID_LENGTH );
257-
258- set_u64_le (bytes + 5 , 8 );
259- set_u64_le (bytes + 13 , UINT64_MAX - (uint64_t ) (header_length + 8 ) + 1 );
260- ret = tsk_json_struct_metadata_get_blob (
261- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
262- CU_ASSERT_EQUAL (ret , TSK_ERR_JSON_STRUCT_METADATA_INVALID_LENGTH );
263- }
264-
26599static void
266100test_double_round (void )
267101{
@@ -832,7 +666,6 @@ main(int argc, char **argv)
832666 { "test_strerror" , test_strerror },
833667 { "test_strerror_kastore" , test_strerror_kastore },
834668 { "test_generate_uuid" , test_generate_uuid },
835- { "test_json_struct_metadata_get_blob" , test_json_struct_metadata_get_blob },
836669 { "test_double_round" , test_double_round },
837670 { "test_blkalloc" , test_blkalloc },
838671 { "test_unknown_time" , test_unknown_time },
0 commit comments