Fix: Move offset endianness conversion to get_data_packet
[babeltrace.git] / formats / ctf / ctf.c
index c503eca1a6879753cf741487556708562ca10a7a..4c64c930da1a4e1e60ccc32642d26286e32d3e97 100644 (file)
@@ -1238,8 +1238,6 @@ int ctf_trace_metadata_read(struct ctf_trace *td, FILE *metadata_fp,
        if (packet_metadata(td, fp)) {
                ret = ctf_trace_metadata_stream_read(td, &fp, &buf);
                if (ret) {
-                       /* Warn about empty metadata */
-                       fprintf(stderr, "[warning] Empty metadata.\n");
                        goto end;
                }
                td->metadata_string = buf;
@@ -1818,6 +1816,7 @@ int import_stream_packet_index(struct ctf_trace *td,
        struct ctf_packet_index *ctf_index = NULL;
        struct ctf_packet_index_file_hdr index_hdr;
        struct packet_index index;
+       uint32_t packet_index_len;
        int ret = 0;
        int first_packet = 1;
        size_t len;
@@ -1845,7 +1844,8 @@ int import_stream_packet_index(struct ctf_trace *td,
                ret = -1;
                goto error;
        }
-       if (index_hdr.packet_index_len == 0) {
+       packet_index_len = be32toh(index_hdr.packet_index_len);
+       if (packet_index_len == 0) {
                fprintf(stderr, "[error] Packet index length cannot be 0.\n");
                ret = -1;
                goto error;
@@ -1854,8 +1854,8 @@ int import_stream_packet_index(struct ctf_trace *td,
         * Allocate the index length found in header, not internal
         * representation.
         */
-       ctf_index = g_malloc0(index_hdr.packet_index_len);
-       while (fread(ctf_index, index_hdr.packet_index_len, 1,
+       ctf_index = g_malloc0(packet_index_len);
+       while (fread(ctf_index, packet_index_len, 1,
                        pos->index_fp) == 1) {
                uint64_t stream_id;
                struct ctf_stream_declaration *stream = NULL;
@@ -2094,6 +2094,9 @@ int ctf_open_trace_read(struct ctf_trace *td,
        ret = ctf_trace_metadata_read(td, metadata_fp, scanner, 0);
        ctf_scanner_free(scanner);
        if (ret) {
+               if (ret == -ENOENT) {
+                       fprintf(stderr, "[warning] Empty metadata.\n");
+               }
                fprintf(stderr, "[warning] Unable to open trace metadata for path \"%s\".\n", path);
                goto error_metadata;
        }
@@ -2311,6 +2314,9 @@ int ctf_open_mmap_trace_read(struct ctf_trace *td,
        }
        ret = ctf_trace_metadata_read(td, metadata_fp, td->scanner, 0);
        if (ret) {
+               if (ret == -ENOENT) {
+                       fprintf(stderr, "[warning] Empty metadata.\n");
+               }
                goto error;
        }
 
This page took 0.025779 seconds and 4 git commands to generate.