Fix: reversed logic in packet vs content size
[babeltrace.git] / formats / ctf / ctf.c
index 752b548e766d37bc60cf3fc21215f10eb894fc55..687e360e1699e87bb1b8eba7b7077bf2d48fe388 100644 (file)
@@ -548,10 +548,15 @@ int ctf_read_event(struct bt_stream_pos *ppos, struct ctf_stream_definition *str
                        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;
 }
 
@@ -670,7 +675,7 @@ int ctf_fini_pos(struct ctf_stream_pos *pos)
 
 /*
  * 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)
 {
@@ -712,7 +717,7 @@ 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 */
@@ -1481,28 +1486,28 @@ begin:
                        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 */
This page took 0.026151 seconds and 4 git commands to generate.