Bug #833
openmemcpy of non-packed struct into packed struct (possible layout mismatch)
0%
Description
lttng-tools src/lib/lttng-ctl/lttng-ctl.c:
lttng_enable_event_with_exclusions()
memcpy(&lsm.u.enable.event, ev, sizeof(lsm.u.enable.event));
copy "ev" (non-packed) into a packed structure.
We should copy each field one by one (create a copy_event_to_event_packed() helper to do so).
Updated by David Goulet about 10 years ago
- Status changed from New to Feedback
How do you copy the union in the lttng_event field by field... ? That union contains non packed structure.
Updated by David Goulet about 10 years ago
- Status changed from Feedback to Confirmed
- Assignee deleted (
David Goulet)
We need helper functions to copy field by field depending on the union type also.
Updated by Christian Babeux almost 10 years ago
- Target version changed from 20 to 2.7
Updated by Michael Jeanson over 9 years ago
The "lttng_event" struct is not defined with the packed attribute, this attribute is only added when "lttng_event" is declared as a member of the "lttcomm_session_msg" struct. Adding the packed attribute to an already defined struct is ignored by the compiler, when it's done outside of a parent struct it generates a warning.
What this all means is that we are not copying a non-packed struct into a packed struct because there is no packed version of lttng_event. This also means we are using unpacked structures in the communication protocol between the client and the sessiond.
Updated by Jérémie Galarneau about 9 years ago
- Target version changed from 2.7 to 2.8
Updated by Jérémie Galarneau over 8 years ago
- Target version changed from 2.8 to 2.9
Updated by Michael Jeanson over 2 years ago
- Assignee set to Jonathan Rajotte Julien
- Target version changed from 2.9 to 2.14
Updated by Erica Bugden over 1 year ago
- Assignee deleted (
Jonathan Rajotte Julien)
Updated by Mathieu Desnoyers over 1 year ago
This is a technical debt low-hanging fruit that we should do. It's not a complex task and would be a nice cleanup.