When using the event notification capture API, empty strings are represented by a NULL pointer with a size=0 in the msgpack object. The NULL pointer is unexpected, which triggers an assertion in lttng_event_field_value_string_create_with_size.
Fix this by duplicating an empty string ("") when a size=0 is encountered. This ensures that users of the API don't end up with an unexpected NULL pointer. Indeed, the sample program notif-app.c in the LTTng website documentation does not expect a NULL pointer. Signed-off-by: Mathieu Desnoyers <mathieu.desnoy...@efficios.com> Change-Id: I7c3a839dbbeeb95a1b3bf6ddc3205a2f6b4538e3 --- src/common/event-field-value.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/common/event-field-value.cpp b/src/common/event-field-value.cpp index 8017fd081..fa9e97018 100644 --- a/src/common/event-field-value.cpp +++ b/src/common/event-field-value.cpp @@ -183,8 +183,17 @@ struct lttng_event_field_value *lttng_event_field_value_string_create_with_size( goto error; } - LTTNG_ASSERT(val); - field_val->val = strndup(val, size); + if (size) { + LTTNG_ASSERT(val); + field_val->val = strndup(val, size); + } else { + /* + * User code (e.g. notif-app.c on lttng.org/docs) do not expect + * a NULL string pointer. Populate with an empty string when + * length is 0. + */ + field_val->val = strdup(""); + } if (!field_val->val) { goto error; } -- 2.25.1 _______________________________________________ lttng-dev mailing list lttng-dev@lists.lttng.org https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev