From: Jérémie Galarneau Date: Wed, 18 May 2022 15:49:34 +0000 (-0400) Subject: Fix: ctf-writer: null dereference in bt_ctf_trace_common_add_stream_class X-Git-Tag: v2.0.6~20 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=1fdbadfc7f16eb7474584238af54b3527d5f0ec7 Fix: ctf-writer: null dereference in bt_ctf_trace_common_add_stream_class Cherry-pick note: I (Simon) see this error when building on the CI's ppc machine, although I don't see it on the CI job. gcc 12.1.0 reports that: In file included from object-pool.h:38, from clock-class.h:11, from trace.c:27: In function 'bt_ctf_object_set_parent', inlined from 'bt_ctf_object_set_parent' at object.h:102:6, inlined from 'bt_ctf_trace_common_add_stream_class' at trace.c:1227:3: object.h:123:26: warning: null pointer dereference [-Wnull-dereference] 123 | if (child->parent) { | ~~~~~^~~~~~~~ object.h:123:26: warning: null pointer dereference [-Wnull-dereference] This can indeed happen if bt_ctf_trace_common_add_stream_class is called with a nil stream class argument. A null check is added in the error path. Signed-off-by: Jérémie Galarneau Change-Id: I313966c1747c3929a46b98af71ba58f607d3c7df Reviewed-on: https://review.lttng.org/c/babeltrace/+/8084 Reviewed-on: https://review.lttng.org/c/babeltrace/+/9566 Tested-by: jenkins --- diff --git a/src/ctf-writer/trace.c b/src/ctf-writer/trace.c index 804af24d..482d81d8 100644 --- a/src/ctf-writer/trace.c +++ b/src/ctf-writer/trace.c @@ -1240,7 +1240,9 @@ int bt_ctf_trace_common_add_stream_class(struct bt_ctf_trace_common *trace, end: if (ret) { - bt_ctf_object_set_parent(&stream_class->base, NULL); + if (stream_class) { + bt_ctf_object_set_parent(&stream_class->base, NULL); + } if (ec_validation_outputs) { for (i = 0; i < event_class_count; i++) {