Fix: sink.ctf.fs: possible uses after free because of unchecked return values
[babeltrace.git] / plugins / ctf / fs-sink / fs-sink-stream.c
index 6e926def2241f9e459bb34146077502c60ef2c81..c11305b722a7029d6c9cfb3b1cd9bc941655aad9 100644 (file)
@@ -548,22 +548,46 @@ int fs_sink_stream_open_packet(struct fs_sink_stream *stream,
        }
 
        /* Packet header: magic */
-       bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser,
+       ret = bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser,
                UINT64_C(0xc1fc1fc1), 8, 32, BYTE_ORDER);
+       if (ret) {
+               BT_LOGE("Error writing packet header magic: stream-file-name=%s",
+                       stream->file_name->str);
+               goto end;
+       }
 
        /* Packet header: UUID */
        for (i = 0; i < BABELTRACE_UUID_LEN; i++) {
-               bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser,
+               ret = bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser,
                        (uint64_t) stream->sc->tc->uuid[i], 8, 8, BYTE_ORDER);
+               if (ret) {
+                       BT_LOGE("Error writing packet header UUID: stream-file-name=%s",
+                               stream->file_name->str);
+                       goto end;
+               }
        }
 
        /* Packet header: stream class ID */
-       bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser,
+       ret = bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser,
                bt_stream_class_get_id(stream->sc->ir_sc), 8, 64, BYTE_ORDER);
+       if (ret) {
+               BT_LOGE("Error writing packet header stream class id: "
+                       "stream-file-name=%s, stream-class-id=%"PRIu64,
+                       stream->file_name->str,
+                       bt_stream_class_get_id(stream->sc->ir_sc));
+               goto end;
+       }
 
        /* Packet header: stream ID */
-       bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser,
+       ret = bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser,
                bt_stream_get_id(stream->ir_stream), 8, 64, BYTE_ORDER);
+       if (ret) {
+               BT_LOGE("Error writing packet header stream id: "
+                       "stream-file-name=%s, stream-id=%"PRIu64,
+                       stream->file_name->str,
+                       bt_stream_get_id(stream->ir_stream));
+               goto end;
+       }
 
        /* Save packet context's offset to rewrite it later */
        stream->packet_state.context_offset_bits =
This page took 0.025372 seconds and 4 git commands to generate.