Fix: test for less than 1 byte packets
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 27 Nov 2013 09:07:08 +0000 (04:07 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 27 Nov 2013 09:07:08 +0000 (04:07 -0500)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
formats/ctf/ctf.c

index 37f339c92a107b00695052bc238634ad1fe7224f..759708856b0a2044c4802325d2a2434ae0525287 100644 (file)
@@ -1554,9 +1554,9 @@ begin:
                }
        } else {
                /* Use file size for packet size */
-               packet_index.content_size = filesize * CHAR_BIT;
-               /* Use content size if non-zero, else file size */
-               packet_index.packet_size = packet_index.content_size ? : filesize * CHAR_BIT;
+               packet_index.packet_size = filesize * CHAR_BIT;
+               /* Use packet size if non-zero, else file size */
+               packet_index.content_size = packet_index.packet_size ? : filesize * CHAR_BIT;
        }
 
        /* Validate content size and packet size values */
@@ -1572,6 +1572,11 @@ begin:
                return -EINVAL;
        }
 
+       if ((packet_index.packet_size >> LOG2_CHAR_BIT) == 0) {
+               fprintf(stderr, "[error] Invalid CTF stream: packet size needs to be at least one byte\n");
+               return -EINVAL;
+       }
+
        /* Save position after header and context */
        packet_index.data_offset = pos->offset;
 
This page took 0.026631 seconds and 4 git commands to generate.