Packet metadata read should substract header size
[babeltrace.git] / formats / ctf / ctf.c
index 2048d6a0f2de776a8e440233e8e514ed039c472a..dc7baf5a891621f726df12a37cc472926208b8aa 100644 (file)
@@ -508,7 +508,7 @@ int ctf_open_trace_metadata_packet_read(struct ctf_trace *td, FILE *in,
                        return -EINVAL;
        }
 
-       toread = header.content_size / CHAR_BIT;
+       toread = (header.content_size / CHAR_BIT) - header_sizeof(header);
 
        for (;;) {
                readlen = fread(buf, sizeof(char), min(sizeof(buf), toread), in);
@@ -784,6 +784,9 @@ int create_stream_packet_index(struct ctf_trace *td,
        if (ret < 0)
                return ret;
 
+       if (filestats.st_size < MAX_PACKET_HEADER_LEN / CHAR_BIT)
+               return -EINVAL;
+
        for (pos->mmap_offset = 0; pos->mmap_offset < filestats.st_size; ) {
                uint64_t stream_id = 0;
 
This page took 0.02377 seconds and 4 git commands to generate.