goto error;
}
+ if (pos->last_offset == pos->offset) {
+ fprintf(stderr, "[error] Invalid 0 byte event encountered.\n");
+ return -EINVAL;
+ }
+
return 0;
error:
- fprintf(stderr, "[error] Unexpected end of stream. Either the trace data stream is corrupted or metadata description does not match data layout.\n");
+ fprintf(stderr, "[error] Unexpected end of packet. Either the trace data stream is corrupted or metadata description does not match data layout.\n");
return ret;
}
/*
* for SEEK_CUR: go to next packet.
- * for SEEK_POS: go to packet numer (index).
+ * for SEEK_SET: go to packet numer (index).
*/
void ctf_packet_seek(struct bt_stream_pos *stream_pos, size_t index, int whence)
{
switch (whence) {
case SEEK_CUR:
/* The writer will add padding */
- pos->mmap_offset += WRITE_PACKET_LEN / CHAR_BIT;
+ pos->mmap_offset += pos->packet_size / CHAR_BIT;
break;
case SEEK_SET:
assert(index == 0); /* only seek supported for now */
fprintf(stderr, "[error] Unable to read packet context: %s\n", strerror(-ret));
return ret;
}
- /* read content size from header */
- len_index = bt_struct_declaration_lookup_field_index(file_stream->parent.stream_packet_context->declaration, g_quark_from_static_string("content_size"));
+ /* read packet size from header */
+ len_index = bt_struct_declaration_lookup_field_index(file_stream->parent.stream_packet_context->declaration, g_quark_from_static_string("packet_size"));
if (len_index >= 0) {
struct bt_definition *field;
field = bt_struct_definition_get_field_from_index(file_stream->parent.stream_packet_context, len_index);
- packet_index.content_size = bt_get_unsigned_int(field);
+ packet_index.packet_size = bt_get_unsigned_int(field);
} else {
/* Use file size for packet size */
- packet_index.content_size = filesize * CHAR_BIT;
+ packet_index.packet_size = filesize * CHAR_BIT;
}
- /* read packet size from header */
- len_index = bt_struct_declaration_lookup_field_index(file_stream->parent.stream_packet_context->declaration, g_quark_from_static_string("packet_size"));
+ /* read content size from header */
+ len_index = bt_struct_declaration_lookup_field_index(file_stream->parent.stream_packet_context->declaration, g_quark_from_static_string("content_size"));
if (len_index >= 0) {
struct bt_definition *field;
field = bt_struct_definition_get_field_from_index(file_stream->parent.stream_packet_context, len_index);
- packet_index.packet_size = bt_get_unsigned_int(field);
+ packet_index.content_size = bt_get_unsigned_int(field);
} else {
- /* Use content size if non-zero, else file size */
- packet_index.packet_size = packet_index.content_size ? : filesize * CHAR_BIT;
+ /* Use packet size if non-zero, else file size */
+ packet_index.content_size = packet_index.packet_size ? : filesize * CHAR_BIT;
}
/* read timestamp begin from header */