X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=formats%2Fctf%2Fctf.c;h=e84e19d870e0d5bd1531e8cdb9266effa2d6806b;hp=41aa35d60fd6a67e23b128a60a258ed03215bab2;hb=c4f5487ee9b60d2a1c0c3dbfedc8f9f377562bc6;hpb=4152822bf555f86a1dce28cb6755ff0849c3a75a diff --git a/formats/ctf/ctf.c b/formats/ctf/ctf.c index 41aa35d6..e84e19d8 100644 --- a/formats/ctf/ctf.c +++ b/formats/ctf/ctf.c @@ -489,6 +489,11 @@ int ctf_open_trace_metadata_stream_read(struct ctf_trace *td, FILE **fp, int ret; in = *fp; + /* + * Using strlen on *buf instead of size of open_memstream + * because its size includes garbage at the end (after final + * \0). This is the allocated size, not the actual string size. + */ out = open_memstream(buf, &size); if (out == NULL) return -errno; @@ -506,7 +511,7 @@ int ctf_open_trace_metadata_stream_read(struct ctf_trace *td, FILE **fp, fclose(out); /* flush the buffer */ fclose(in); /* open for reading */ - *fp = fmemopen(*buf, size, "rb"); + *fp = fmemopen(*buf, strlen(*buf), "rb"); return 0; }