X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=formats%2Fctf%2Fctf.c;h=552133c3238719ecc63a1acfb2fa3f27831b24ab;hp=deb9a66d195d989d98373346423ca407d9dde494;hb=abc40d240660a2f727092bc7fcd727f6d5c82c16;hpb=c790c052a84aa223002e6a9be2583861bb27a40a diff --git a/formats/ctf/ctf.c b/formats/ctf/ctf.c index deb9a66d..552133c3 100644 --- a/formats/ctf/ctf.c +++ b/formats/ctf/ctf.c @@ -961,7 +961,7 @@ int ctf_open_trace_metadata_stream_read(struct ctf_trace *td, FILE **fp, char **buf) { FILE *in, *out; - size_t size; + size_t size, buflen; int ret; in = *fp; @@ -1003,7 +1003,12 @@ int ctf_open_trace_metadata_stream_read(struct ctf_trace *td, FILE **fp, perror("Error in fclose"); } /* open for reading */ - *fp = babeltrace_fmemopen(*buf, strlen(*buf), "rb"); + buflen = strlen(*buf); + if (!buflen) { + *fp = NULL; + return -ENODATA; + } + *fp = babeltrace_fmemopen(*buf, buflen, "rb"); if (!*fp) { perror("Metadata fmemopen"); return -errno; @@ -1060,8 +1065,11 @@ int ctf_open_trace_metadata_read(struct ctf_trace *td, if (packet_metadata(td, fp)) { ret = ctf_open_trace_metadata_stream_read(td, &fp, &buf); - if (ret) + if (ret) { + /* Warn about empty metadata */ + fprintf(stderr, "[warning] Empty metadata.\n"); goto end_packet_read; + } } else { unsigned int major, minor; ssize_t nr_items;