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.desnoyers@efficios.com>
Change-Id: I7c3a839dbbeeb95a1b3bf6ddc3205a2f6b4538e3
goto error;
}
- assert(val);
- field_val->val = strndup(val, size);
+ if (size) {
+ assert(val);
+ field_val->val = strndup(val, size);
+ } else {
+ /*
+ * User code 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;
}