Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions c/tests/test_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,19 +101,19 @@ test_json_struct_metadata_get_blob(void)
{
int ret;
char metadata[128];
const char *json;
char *json;
tsk_size_t json_buffer_length;
const char *blob;
char *blob;
tsk_size_t blob_length;
uint8_t *bytes;
tsk_size_t metadata_length;
size_t header_length;
size_t json_length;
size_t payload_length;
size_t total_length;
const char json_payload[] = "{\"a\":1}";
const uint8_t binary_payload[] = { 0x01, 0x02, 0x03, 0x04 };
const uint8_t empty_payload[] = { 0 };
char json_payload[] = "{\"a\":1}";
uint8_t binary_payload[] = { 0x01, 0x02, 0x03, 0x04 };
uint8_t empty_payload[] = { 0 };

bytes = (uint8_t *) metadata;
header_length = 4 + 1 + 8 + 8;
Expand All @@ -135,7 +135,7 @@ test_json_struct_metadata_get_blob(void)
ret = tsk_json_struct_metadata_get_blob(
metadata, metadata_length, &json, &json_buffer_length, &blob, &blob_length);
CU_ASSERT_EQUAL(ret, 0);
CU_ASSERT_PTR_EQUAL(json, (const char *) bytes + header_length);
CU_ASSERT_PTR_EQUAL(json, (char *) bytes + header_length);
CU_ASSERT_EQUAL(json_buffer_length, (tsk_size_t) json_length);
if (json_length > 0) {
CU_ASSERT_EQUAL(memcmp(json, json_payload, json_length), 0);
Expand All @@ -152,7 +152,7 @@ test_json_struct_metadata_get_blob(void)
ret = tsk_json_struct_metadata_get_blob(
metadata, metadata_length, &json, &json_buffer_length, &blob, &blob_length);
CU_ASSERT_EQUAL(ret, 0);
CU_ASSERT_PTR_EQUAL(json, (const char *) bytes + header_length);
CU_ASSERT_PTR_EQUAL(json, (char *) bytes + header_length);
CU_ASSERT_EQUAL(json_buffer_length, (tsk_size_t) json_length);
CU_ASSERT_EQUAL(blob_length, (tsk_size_t) payload_length);
CU_ASSERT_PTR_EQUAL(blob, bytes + header_length + json_length);
Expand All @@ -168,7 +168,7 @@ test_json_struct_metadata_get_blob(void)
ret = tsk_json_struct_metadata_get_blob(
metadata, metadata_length, &json, &json_buffer_length, &blob, &blob_length);
CU_ASSERT_EQUAL(ret, 0);
CU_ASSERT_PTR_EQUAL(json, (const char *) bytes + header_length);
CU_ASSERT_PTR_EQUAL(json, (char *) bytes + header_length);
CU_ASSERT_EQUAL(json_buffer_length, (tsk_size_t) json_length);
CU_ASSERT_EQUAL(blob_length, (tsk_size_t) payload_length);
CU_ASSERT_PTR_EQUAL(blob, bytes + header_length + json_length);
Expand Down
17 changes: 8 additions & 9 deletions c/tskit/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,26 +142,25 @@ tsk_generate_uuid(char *dest, int TSK_UNUSED(flags))
}

int
tsk_json_struct_metadata_get_blob(const char *metadata, tsk_size_t metadata_length,
const char **json, tsk_size_t *json_length, const char **blob,
tsk_size_t *blob_length)
tsk_json_struct_metadata_get_blob(char *metadata, tsk_size_t metadata_length,
char **json, tsk_size_t *json_length, char **blob, tsk_size_t *blob_length)
{
int ret;
uint8_t version;
uint64_t json_length_u64;
uint64_t binary_length_u64;
uint64_t header_and_json_length;
uint64_t total_length;
const uint8_t *bytes;
const char *blob_start;
const char *json_start;
uint8_t *bytes;
char *blob_start;
char *json_start;

if (metadata == NULL || json == NULL || json_length == NULL || blob == NULL
|| blob_length == NULL) {
ret = tsk_trace_error(TSK_ERR_BAD_PARAM_VALUE);
goto out;
}
bytes = (const uint8_t *) metadata;
bytes = (uint8_t *) metadata;
if (metadata_length < TSK_JSON_BINARY_HEADER_SIZE) {
ret = tsk_trace_error(TSK_ERR_JSON_STRUCT_METADATA_TRUNCATED);
goto out;
Expand Down Expand Up @@ -191,8 +190,8 @@ tsk_json_struct_metadata_get_blob(const char *metadata, tsk_size_t metadata_leng
ret = tsk_trace_error(TSK_ERR_JSON_STRUCT_METADATA_TRUNCATED);
goto out;
}
json_start = (const char *) bytes + TSK_JSON_BINARY_HEADER_SIZE;
blob_start = (const char *) bytes + TSK_JSON_BINARY_HEADER_SIZE + json_length_u64;
json_start = (char *) bytes + TSK_JSON_BINARY_HEADER_SIZE;
blob_start = (char *) bytes + TSK_JSON_BINARY_HEADER_SIZE + json_length_u64;
*json = json_start;
*json_length = (tsk_size_t) json_length_u64;
*blob = blob_start;
Expand Down
5 changes: 2 additions & 3 deletions c/tskit/core.h
Original file line number Diff line number Diff line change
Expand Up @@ -1153,9 +1153,8 @@ the original metadata buffer is alive.
@param[out] blob_length On success, set to the payload length in bytes.
@return Return 0 on success or a negative value on failure.
*/
int tsk_json_struct_metadata_get_blob(const char *metadata, tsk_size_t metadata_length,
const char **json, tsk_size_t *json_length, const char **blob,
tsk_size_t *blob_length);
int tsk_json_struct_metadata_get_blob(char *metadata, tsk_size_t metadata_length,
char **json, tsk_size_t *json_length, char **blob, tsk_size_t *blob_length);

/* TODO most of these can probably be macros so they compile out as no-ops.
* Lets do the 64 bit tsk_size_t switch first though. */
Expand Down
Loading