Fix: lttng_uri structure must be packed as it is used for IPC
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 19 Mar 2019 19:37:28 +0000 (15:37 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 26 Mar 2019 18:41:05 +0000 (14:41 -0400)
The lttng_create_session commands send lttng_uri structures over
a UNIX socket. As such, the structure must be packed to preclude
the inclusion of any padding.

Moreover, the 'in_port_t' is replaced by uint16_t and PATH_MAX
is replaced by LTTNG_PATH_MAX to prevent conflicts if both ends
of the IPC are not build with the same toolchain/definitions.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/common/uri.h

index 3ef6669e6097d6ead83f4fa95d2fb6dbed5fcbbf..17b0419181d68dc6c2747555503bdb869f097b56 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <netinet/in.h>
 #include <lttng/lttng.h>
+#include <common/macros.h>
 
 /* Destination type of lttng URI */
 enum lttng_dst_type {
@@ -65,14 +66,14 @@ struct lttng_uri {
        enum lttng_uri_type utype;
        enum lttng_stream_type stype;
        enum lttng_proto_type proto;
-       in_port_t port;
-       char subdir[PATH_MAX];
+       uint16_t port;
+       char subdir[LTTNG_PATH_MAX];
        union {
                char ipv4[INET_ADDRSTRLEN];
                char ipv6[INET6_ADDRSTRLEN];
-               char path[PATH_MAX];
+               char path[LTTNG_PATH_MAX];
        } dst;
-};
+} LTTNG_PACKED;
 
 int uri_compare(struct lttng_uri *uri1, struct lttng_uri *uri2);
 void uri_free(struct lttng_uri *uri);
This page took 0.027478 seconds and 5 git commands to generate.