Fix: honor "user" attribute for array/sequence of user integers
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 29 Sep 2022 18:26:27 +0000 (14:26 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 29 Sep 2022 18:34:30 +0000 (14:34 -0400)
The macro _lttng_kernel_static_type_integer_from_type() should map to
_lttng_kernel_static_type_integer() to pass the "_user" attribute.
Otherwise, userspace fields such as pipe2's system call fildes field (a
ctf_user_array()) can trigger NULL pointer exceptions and read arbitrary
kernel memory if the pipe2 system call receives a bogus pointer as input
while filtering/capture is accessing this field.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I44276d751b822f214804184d1ce4d9b10b47d89d

include/lttng/events.h

index 71ad12749ccbc1703361a85e58d91f98606345fa..7a44815554324dfd602d92500669f69cfae2ca46 100644 (file)
@@ -163,11 +163,10 @@ struct lttng_kernel_event_field {
        _lttng_kernel_static_type_integer(_size, _alignment, _signedness, _byte_order, 1, _base)
 
 #define _lttng_kernel_static_type_integer_from_type(_type, _byte_order, _user, _base)                  \
-       lttng_kernel_static_type_integer(sizeof(_type) * CHAR_BIT,                                      \
+       _lttng_kernel_static_type_integer(sizeof(_type) * CHAR_BIT,                                     \
                        lttng_alignof(_type) * CHAR_BIT,                                                \
                        lttng_is_signed_type(_type),                                                    \
-                       _byte_order,                                                                    \
-                       _base)
+                       _byte_order, _user, _base)
 
 #define lttng_kernel_static_type_integer_from_type(_type, _byte_order, _base)                          \
        _lttng_kernel_static_type_integer_from_type(_type, _byte_order, 0, _base)
This page took 0.03068 seconds and 4 git commands to generate.