projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lttng-ctl: fix: possible unaligned access in packed structure
[lttng-tools.git]
/
src
/
lib
/
lttng-ctl
/
lttng-ctl.c
diff --git
a/src/lib/lttng-ctl/lttng-ctl.c
b/src/lib/lttng-ctl/lttng-ctl.c
index 9e709c1b6e4157f9072838d3fdbc8f779ed63cda..79644ceed79ae55c7c543de9d0a2af8e680f08bd 100644
(file)
--- a/
src/lib/lttng-ctl/lttng-ctl.c
+++ b/
src/lib/lttng-ctl/lttng-ctl.c
@@
-67,6
+67,13
@@
do { \
} while (0)
#endif
} while (0)
#endif
+#define COPY_DOMAIN_PACKED(dst, src) \
+do { \
+ struct lttng_domain _tmp_domain; \
+ \
+ lttng_ctl_copy_lttng_domain(&_tmp_domain, &src); \
+ dst = _tmp_domain; \
+} while (0)
/* Socket to session daemon for communication */
static int sessiond_socket = -1;
/* Socket to session daemon for communication */
static int sessiond_socket = -1;
@@
-653,7
+660,7
@@
int lttng_register_consumer(struct lttng_handle *handle,
lsm.cmd_type = LTTNG_REGISTER_CONSUMER;
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
lsm.cmd_type = LTTNG_REGISTER_CONSUMER;
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
-
lttng_ctl_copy_lttng_domain(&lsm.domain, &
handle->domain);
+
COPY_DOMAIN_PACKED(lsm.domain,
handle->domain);
lttng_ctl_copy_string(lsm.u.reg.path, socket_path,
sizeof(lsm.u.reg.path));
lttng_ctl_copy_string(lsm.u.reg.path, socket_path,
sizeof(lsm.u.reg.path));
@@
-784,7
+791,7
@@
int lttng_add_context(struct lttng_handle *handle,
sizeof(lsm.u.context.channel_name));
}
sizeof(lsm.u.context.channel_name));
}
-
lttng_ctl_copy_lttng_domain(&lsm.domain, &
handle->domain);
+
COPY_DOMAIN_PACKED(lsm.domain,
handle->domain);
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
@@
-1124,8
+1131,7
@@
int lttng_enable_event_with_exclusions(struct lttng_handle *handle,
lttng_ctl_copy_string(ev->name, "*", sizeof(ev->name));
}
lttng_ctl_copy_string(ev->name, "*", sizeof(ev->name));
}
- lttng_ctl_copy_lttng_domain(&lsm.domain, &handle->domain);
- /* FIXME: copying non-packed struct to packed struct. */
+ COPY_DOMAIN_PACKED(lsm.domain, handle->domain);
memcpy(&lsm.u.enable.event, ev, sizeof(lsm.u.enable.event));
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
memcpy(&lsm.u.enable.event, ev, sizeof(lsm.u.enable.event));
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
@@
-1318,8
+1324,7
@@
int lttng_disable_event_ext(struct lttng_handle *handle,
lsm.cmd_type = LTTNG_DISABLE_EVENT;
lsm.cmd_type = LTTNG_DISABLE_EVENT;
- lttng_ctl_copy_lttng_domain(&lsm.domain, &handle->domain);
- /* FIXME: copying non-packed struct to packed struct. */
+ COPY_DOMAIN_PACKED(lsm.domain, handle->domain);
memcpy(&lsm.u.disable.event, ev, sizeof(lsm.u.disable.event));
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
memcpy(&lsm.u.disable.event, ev, sizeof(lsm.u.disable.event));
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
@@
-1565,7
+1570,7
@@
int lttng_enable_channel(struct lttng_handle *handle,
}
lsm.cmd_type = LTTNG_ENABLE_CHANNEL;
}
lsm.cmd_type = LTTNG_ENABLE_CHANNEL;
-
lttng_ctl_copy_lttng_domain(&lsm.domain, &
handle->domain);
+
COPY_DOMAIN_PACKED(lsm.domain,
handle->domain);
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
@@
-1593,7
+1598,7
@@
int lttng_disable_channel(struct lttng_handle *handle, const char *name)
lttng_ctl_copy_string(lsm.u.disable.channel_name, name,
sizeof(lsm.u.disable.channel_name));
lttng_ctl_copy_string(lsm.u.disable.channel_name, name,
sizeof(lsm.u.disable.channel_name));
-
lttng_ctl_copy_lttng_domain(&lsm.domain, &
handle->domain);
+
COPY_DOMAIN_PACKED(lsm.domain,
handle->domain);
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
@@
-1619,7
+1624,7
@@
int lttng_track_pid(struct lttng_handle *handle, int pid)
lsm.cmd_type = LTTNG_TRACK_PID;
lsm.u.pid_tracker.pid = pid;
lsm.cmd_type = LTTNG_TRACK_PID;
lsm.u.pid_tracker.pid = pid;
-
lttng_ctl_copy_lttng_domain(&lsm.domain, &
handle->domain);
+
COPY_DOMAIN_PACKED(lsm.domain,
handle->domain);
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
@@
-1645,7
+1650,7
@@
int lttng_untrack_pid(struct lttng_handle *handle, int pid)
lsm.cmd_type = LTTNG_UNTRACK_PID;
lsm.u.pid_tracker.pid = pid;
lsm.cmd_type = LTTNG_UNTRACK_PID;
lsm.u.pid_tracker.pid = pid;
-
lttng_ctl_copy_lttng_domain(&lsm.domain, &
handle->domain);
+
COPY_DOMAIN_PACKED(lsm.domain,
handle->domain);
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
@@
-1671,7
+1676,7
@@
int lttng_list_tracepoints(struct lttng_handle *handle,
memset(&lsm, 0, sizeof(lsm));
lsm.cmd_type = LTTNG_LIST_TRACEPOINTS;
memset(&lsm, 0, sizeof(lsm));
lsm.cmd_type = LTTNG_LIST_TRACEPOINTS;
-
lttng_ctl_copy_lttng_domain(&lsm.domain, &
handle->domain);
+
COPY_DOMAIN_PACKED(lsm.domain,
handle->domain);
ret = lttng_ctl_ask_sessiond(&lsm, (void **) events);
if (ret < 0) {
ret = lttng_ctl_ask_sessiond(&lsm, (void **) events);
if (ret < 0) {
@@
-1699,7
+1704,7
@@
int lttng_list_tracepoint_fields(struct lttng_handle *handle,
memset(&lsm, 0, sizeof(lsm));
lsm.cmd_type = LTTNG_LIST_TRACEPOINT_FIELDS;
memset(&lsm, 0, sizeof(lsm));
lsm.cmd_type = LTTNG_LIST_TRACEPOINT_FIELDS;
-
lttng_ctl_copy_lttng_domain(&lsm.domain, &
handle->domain);
+
COPY_DOMAIN_PACKED(lsm.domain,
handle->domain);
ret = lttng_ctl_ask_sessiond(&lsm, (void **) fields);
if (ret < 0) {
ret = lttng_ctl_ask_sessiond(&lsm, (void **) fields);
if (ret < 0) {
@@
-2201,7
+2206,7
@@
int lttng_list_channels(struct lttng_handle *handle,
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
-
lttng_ctl_copy_lttng_domain(&lsm.domain, &
handle->domain);
+
COPY_DOMAIN_PACKED(lsm.domain,
handle->domain);
ret = lttng_ctl_ask_sessiond(&lsm, (void**) channels);
if (ret < 0) {
ret = lttng_ctl_ask_sessiond(&lsm, (void**) channels);
if (ret < 0) {
@@
-2261,7
+2266,7
@@
int lttng_list_events(struct lttng_handle *handle,
sizeof(lsm.session.name));
lttng_ctl_copy_string(lsm.u.list.channel_name, channel_name,
sizeof(lsm.u.list.channel_name));
sizeof(lsm.session.name));
lttng_ctl_copy_string(lsm.u.list.channel_name, channel_name,
sizeof(lsm.u.list.channel_name));
-
lttng_ctl_copy_lttng_domain(&lsm.domain, &
handle->domain);
+
COPY_DOMAIN_PACKED(lsm.domain,
handle->domain);
ret = lttng_ctl_ask_sessiond_fds_varlen(&lsm, NULL, 0, NULL, 0,
(void **) &reception_buffer, (void **) &cmd_header,
ret = lttng_ctl_ask_sessiond_fds_varlen(&lsm, NULL, 0, NULL, 0,
(void **) &reception_buffer, (void **) &cmd_header,
@@
-2788,7
+2793,7
@@
int lttng_set_consumer_url(struct lttng_handle *handle,
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
-
lttng_ctl_copy_lttng_domain(&lsm.domain, &
handle->domain);
+
COPY_DOMAIN_PACKED(lsm.domain,
handle->domain);
size = uri_parse_str_urls(control_url, data_url, &uris);
if (size < 0) {
size = uri_parse_str_urls(control_url, data_url, &uris);
if (size < 0) {
@@
-2896,7
+2901,7
@@
int lttng_list_tracker_pids(struct lttng_handle *handle,
lsm.cmd_type = LTTNG_LIST_TRACKER_PIDS;
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
lsm.cmd_type = LTTNG_LIST_TRACKER_PIDS;
lttng_ctl_copy_string(lsm.session.name, handle->session_name,
sizeof(lsm.session.name));
-
lttng_ctl_copy_lttng_domain(&lsm.domain, &
handle->domain);
+
COPY_DOMAIN_PACKED(lsm.domain,
handle->domain);
ret = lttng_ctl_ask_sessiond(&lsm, (void **) &pids);
if (ret < 0) {
ret = lttng_ctl_ask_sessiond(&lsm, (void **) &pids);
if (ret < 0) {
This page took
0.027413 seconds
and
4
git commands to generate.