[lttng-dev] [BABELTRACE PATCH] Use 64-bit type for packet and content size
Mathieu Desnoyers
mathieu.desnoyers at efficios.com
Mon Feb 13 08:33:06 EST 2012
* Juha Niskanen (juniskane at gmail.com) wrote:
> Expression filestats.st_size * CHAR_BIT wraps around very easily
> when stored to 32-bit size_t. Currently BabelTrace cannot handle
> input larger than 256Mb because of this and diagnostic messages
> from this function can be incorrect because of overflow.
>
> This patch fixes my immediate problem, but further work is needed
> for proper large file support i.e. handling files bigger than 2Gb.
Merged, thanks!
Mathieu
>
> Signed-off-by: Juha Niskanen <juniskane at gmail.com>
> ---
> formats/ctf/ctf.c | 8 ++++----
> include/babeltrace/ctf/types.h | 4 ++--
> 2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/formats/ctf/ctf.c b/formats/ctf/ctf.c
> index 3ce428c..ea760f0 100644
> --- a/formats/ctf/ctf.c
> +++ b/formats/ctf/ctf.c
> @@ -1185,14 +1185,14 @@ int create_stream_packet_index(struct ctf_trace *td,
>
> /* Validate content size and packet size values */
> if (packet_index.content_size > packet_index.packet_size) {
> - fprintf(stderr, "[error] Content size (%zu bits) is larger than packet size (%zu bits).\n",
> + fprintf(stderr, "[error] Content size (%" PRIu64 " bits) is larger than packet size (%" PRIu64 " bits).\n",
> packet_index.content_size, packet_index.packet_size);
> return -EINVAL;
> }
>
> - if (packet_index.packet_size > (filestats.st_size - packet_index.offset) * CHAR_BIT) {
> - fprintf(stderr, "[error] Packet size (%zu bits) is larger than remaining file size (%zu bits).\n",
> - packet_index.content_size, (size_t) (filestats.st_size - packet_index.offset) * CHAR_BIT);
> + if (packet_index.packet_size > ((uint64_t)filestats.st_size - packet_index.offset) * CHAR_BIT) {
> + fprintf(stderr, "[error] Packet size (%" PRIu64 " bits) is larger than remaining file size (%" PRIu64 " bits).\n",
> + packet_index.content_size, ((uint64_t)filestats.st_size - packet_index.offset) * CHAR_BIT);
> return -EINVAL;
> }
>
> diff --git a/include/babeltrace/ctf/types.h b/include/babeltrace/ctf/types.h
> index 12cca6e..9cbb338 100644
> --- a/include/babeltrace/ctf/types.h
> +++ b/include/babeltrace/ctf/types.h
> @@ -36,8 +36,8 @@ struct bt_stream_callbacks;
> struct packet_index {
> off_t offset; /* offset of the packet in the file, in bytes */
> off_t data_offset; /* offset of data within the packet, in bits */
> - size_t packet_size; /* packet size, in bits */
> - size_t content_size; /* content size, in bits */
> + uint64_t packet_size; /* packet size, in bits */
> + uint64_t content_size; /* content size, in bits */
> uint64_t timestamp_begin;
> uint64_t timestamp_end;
> uint32_t events_discarded;
> --
> 1.7.4.1
>
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
More information about the lttng-dev
mailing list