@@ -83,161 +83,6 @@ test_generate_uuid(void)
8383 CU_ASSERT_STRING_NOT_EQUAL (uuid , other_uuid );
8484}
8585
86- static void
87- set_u64_le (uint8_t * dest , uint64_t value )
88- {
89- dest [0 ] = (uint8_t ) (value & 0xFF );
90- dest [1 ] = (uint8_t ) ((value >> 8 ) & 0xFF );
91- dest [2 ] = (uint8_t ) ((value >> 16 ) & 0xFF );
92- dest [3 ] = (uint8_t ) ((value >> 24 ) & 0xFF );
93- dest [4 ] = (uint8_t ) ((value >> 32 ) & 0xFF );
94- dest [5 ] = (uint8_t ) ((value >> 40 ) & 0xFF );
95- dest [6 ] = (uint8_t ) ((value >> 48 ) & 0xFF );
96- dest [7 ] = (uint8_t ) ((value >> 56 ) & 0xFF );
97- }
98-
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 payload_length ;
113- size_t total_length ;
114- char json_payload [] = "{\"a\":1}" ;
115- uint8_t binary_payload [] = { 0x01 , 0x02 , 0x03 , 0x04 };
116- uint8_t empty_payload [] = { 0 };
117-
118- bytes = (uint8_t * ) metadata ;
119- header_length = 4 + 1 + 8 + 8 ;
120- json_length = strlen (json_payload );
121- payload_length = sizeof (binary_payload );
122- total_length = header_length + json_length + payload_length ;
123- CU_ASSERT_FATAL (total_length <= sizeof (metadata ));
124- memset (metadata , 0 , sizeof (metadata ));
125- bytes [0 ] = 'J' ;
126- bytes [1 ] = 'B' ;
127- bytes [2 ] = 'L' ;
128- bytes [3 ] = 'B' ;
129- bytes [4 ] = 1 ;
130- set_u64_le (bytes + 5 , (uint64_t ) json_length );
131- set_u64_le (bytes + 13 , (uint64_t ) payload_length );
132- memcpy (bytes + header_length , json_payload , json_length );
133- memcpy (bytes + header_length + json_length , binary_payload , payload_length );
134- metadata_length = (tsk_size_t ) total_length ;
135- ret = tsk_json_struct_metadata_get_blob (
136- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
137- CU_ASSERT_EQUAL (ret , 0 );
138- CU_ASSERT_PTR_EQUAL (json , (char * ) bytes + header_length );
139- CU_ASSERT_EQUAL (json_buffer_length , (tsk_size_t ) json_length );
140- if (json_length > 0 ) {
141- CU_ASSERT_EQUAL (memcmp (json , json_payload , json_length ), 0 );
142- }
143- CU_ASSERT_PTR_EQUAL (blob , bytes + header_length + json_length );
144- CU_ASSERT_EQUAL (blob_length , (tsk_size_t ) payload_length );
145- CU_ASSERT_EQUAL (memcmp (blob , binary_payload , payload_length ), 0 );
146-
147- payload_length = 0 ;
148- total_length = header_length + json_length + payload_length ;
149- CU_ASSERT_FATAL (total_length <= sizeof (metadata ));
150- set_u64_le (bytes + 13 , (uint64_t ) payload_length );
151- metadata_length = (tsk_size_t ) total_length ;
152- ret = tsk_json_struct_metadata_get_blob (
153- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
154- CU_ASSERT_EQUAL (ret , 0 );
155- CU_ASSERT_PTR_EQUAL (json , (char * ) bytes + header_length );
156- CU_ASSERT_EQUAL (json_buffer_length , (tsk_size_t ) json_length );
157- CU_ASSERT_EQUAL (blob_length , (tsk_size_t ) payload_length );
158- CU_ASSERT_PTR_EQUAL (blob , bytes + header_length + json_length );
159-
160- json_length = 0 ;
161- payload_length = sizeof (empty_payload );
162- total_length = header_length + json_length + payload_length ;
163- CU_ASSERT_FATAL (total_length <= sizeof (metadata ));
164- set_u64_le (bytes + 5 , (uint64_t ) json_length );
165- set_u64_le (bytes + 13 , (uint64_t ) payload_length );
166- memcpy (bytes + header_length + json_length , empty_payload , payload_length );
167- metadata_length = (tsk_size_t ) total_length ;
168- ret = tsk_json_struct_metadata_get_blob (
169- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
170- CU_ASSERT_EQUAL (ret , 0 );
171- CU_ASSERT_PTR_EQUAL (json , (char * ) bytes + header_length );
172- CU_ASSERT_EQUAL (json_buffer_length , (tsk_size_t ) json_length );
173- CU_ASSERT_EQUAL (blob_length , (tsk_size_t ) payload_length );
174- CU_ASSERT_PTR_EQUAL (blob , bytes + header_length + json_length );
175- CU_ASSERT_EQUAL (memcmp (blob , empty_payload , payload_length ), 0 );
176-
177- blob = NULL ;
178- blob_length = 0 ;
179- json = NULL ;
180- json_buffer_length = 0 ;
181- metadata_length = header_length - 1 ;
182- ret = tsk_json_struct_metadata_get_blob (
183- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
184- CU_ASSERT_EQUAL (ret , TSK_ERR_JSON_STRUCT_METADATA_TRUNCATED );
185-
186- metadata_length = (tsk_size_t ) total_length ;
187- bytes [0 ] = 'X' ;
188- ret = tsk_json_struct_metadata_get_blob (
189- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
190- CU_ASSERT_EQUAL (ret , TSK_ERR_JSON_STRUCT_METADATA_BAD_MAGIC );
191- bytes [0 ] = 'J' ;
192-
193- bytes [4 ] = 2 ;
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_BAD_VERSION );
197- bytes [4 ] = 1 ;
198-
199- metadata_length = (tsk_size_t ) (total_length - 1 );
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_TRUNCATED );
203-
204- ret = tsk_json_struct_metadata_get_blob (
205- NULL , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
206- CU_ASSERT_EQUAL (ret , TSK_ERR_BAD_PARAM_VALUE );
207- ret = tsk_json_struct_metadata_get_blob (
208- metadata , metadata_length , NULL , & json_buffer_length , & blob , & blob_length );
209- CU_ASSERT_EQUAL (ret , TSK_ERR_BAD_PARAM_VALUE );
210- ret = tsk_json_struct_metadata_get_blob (
211- metadata , metadata_length , & json , NULL , & blob , & blob_length );
212- CU_ASSERT_EQUAL (ret , TSK_ERR_BAD_PARAM_VALUE );
213- ret = tsk_json_struct_metadata_get_blob (
214- metadata , metadata_length , & json , & json_buffer_length , NULL , & blob_length );
215- CU_ASSERT_EQUAL (ret , TSK_ERR_BAD_PARAM_VALUE );
216- ret = tsk_json_struct_metadata_get_blob (
217- metadata , metadata_length , & json , & json_buffer_length , & blob , NULL );
218- CU_ASSERT_EQUAL (ret , TSK_ERR_BAD_PARAM_VALUE );
219-
220- memset (metadata , 0 , sizeof (metadata ));
221- bytes [0 ] = 'J' ;
222- bytes [1 ] = 'B' ;
223- bytes [2 ] = 'L' ;
224- bytes [3 ] = 'B' ;
225- bytes [4 ] = 1 ;
226- metadata_length = (tsk_size_t ) header_length ;
227-
228- set_u64_le (bytes + 5 , UINT64_MAX - (uint64_t ) header_length + 1 );
229- set_u64_le (bytes + 13 , 0 );
230- ret = tsk_json_struct_metadata_get_blob (
231- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
232- CU_ASSERT_EQUAL (ret , TSK_ERR_JSON_STRUCT_METADATA_INVALID_LENGTH );
233-
234- set_u64_le (bytes + 5 , 8 );
235- set_u64_le (bytes + 13 , UINT64_MAX - (uint64_t ) (header_length + 8 ) + 1 );
236- ret = tsk_json_struct_metadata_get_blob (
237- metadata , metadata_length , & json , & json_buffer_length , & blob , & blob_length );
238- CU_ASSERT_EQUAL (ret , TSK_ERR_JSON_STRUCT_METADATA_INVALID_LENGTH );
239- }
240-
24186static void
24287test_double_round (void )
24388{
@@ -808,7 +653,6 @@ main(int argc, char **argv)
808653 { "test_strerror" , test_strerror },
809654 { "test_strerror_kastore" , test_strerror_kastore },
810655 { "test_generate_uuid" , test_generate_uuid },
811- { "test_json_struct_metadata_get_blob" , test_json_struct_metadata_get_blob },
812656 { "test_double_round" , test_double_round },
813657 { "test_blkalloc" , test_blkalloc },
814658 { "test_unknown_time" , test_unknown_time },
0 commit comments