summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
a8d119b)
A number of files declaring "packed" structures (using the LTTNG_PACKED
macro) do not include common/macros.h, which defines this macro.
This results in structures being used in their "unpacked" form, or
under both packed and unpacked forms, depending on the other files
included at the point of definition and use of these structures.
It is unclear which of the users of these structures were actually
affected by the bug. Most of these structures are used for IPC
over a UNIX socket. In these cases, it is reasonable to assume that
lttng-tools will be rebuilt completely to take this change into
account.
However, the structures declared in common/sessiond-comm/relayd.h are
more worrying as they are part of the relay daemon's network protocol.
Fortunately, adding the following directive to
common/sessiond-comm/relayd.h confirms that the header is included
transitively where those structures are used.
> #ifndef LTTNG_PACKED
> #error Not defined!
> #endif
Instances of this issue were found using the following script.
for file in $(ag -l LTTNG_PACKED); do
ag "#include \<common/macros\.h\>" -l ${file} > /dev/null
if [ $? -ne 0 ]; then
echo "Missing include in" $file
fi
done
Running this script produces the following output (annotated):
Missing include in include/lttng/channel-internal.h
Missing include in include/lttng/condition/buffer-usage-internal.h
Missing include in include/lttng/condition/session-consumed-size-internal.h
Missing include in include/lttng/condition/session-rotation-internal.h
Missing include in src/common/sessiond-comm/sessiond-comm.h
Missing include in src/common/sessiond-comm/relayd.h
Missing include in src/common/sessiond-comm/agent.h
> LTTNG_PACKED mentioned in comments
Missing include in src/common/optional.h
> Unneeded.
Missing include in src/common/macros.h
> lttng-ust-abi.h defines its own version of LTTNG_PACKED
> and is included by lttng-ust-ctl.h
Missing include in src/bin/lttng-sessiond/lttng-ust-ctl.h
Missing include in src/bin/lttng-sessiond/lttng-ust-abi.h
Missing include in src/lib/lttng-ctl/filter/filter-bytecode.h
> False positives (not source files)
Missing include in packed.sh
Missing include in ChangeLog
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
#ifndef LTTNG_CHANNEL_INTERNAL_H
#define LTTNG_CHANNEL_INTERNAL_H
#ifndef LTTNG_CHANNEL_INTERNAL_H
#define LTTNG_CHANNEL_INTERNAL_H
+#include <common/macros.h>
+
struct lttng_channel_extended {
uint64_t discarded_events;
uint64_t lost_packets;
struct lttng_channel_extended {
uint64_t discarded_events;
uint64_t lost_packets;
#include <lttng/condition/evaluation-internal.h>
#include <lttng/domain.h>
#include "common/buffer-view.h"
#include <lttng/condition/evaluation-internal.h>
#include <lttng/domain.h>
#include "common/buffer-view.h"
+#include <common/macros.h>
struct lttng_condition_buffer_usage {
struct lttng_condition parent;
struct lttng_condition_buffer_usage {
struct lttng_condition parent;
#include <lttng/condition/session-consumed-size.h>
#include <lttng/condition/condition-internal.h>
#include <lttng/condition/evaluation-internal.h>
#include <lttng/condition/session-consumed-size.h>
#include <lttng/condition/condition-internal.h>
#include <lttng/condition/evaluation-internal.h>
-#include "common/buffer-view.h"
+#include <common/buffer-view.h>
+#include <common/macros.h>
struct lttng_condition_session_consumed_size {
struct lttng_condition parent;
struct lttng_condition_session_consumed_size {
struct lttng_condition parent;
#include <lttng/condition/evaluation-internal.h>
#include "common/buffer-view.h"
#include <lttng/location.h>
#include <lttng/condition/evaluation-internal.h>
#include "common/buffer-view.h"
#include <lttng/location.h>
+#include <common/macros.h>
struct lttng_condition_session_rotation {
struct lttng_condition parent;
struct lttng_condition_session_rotation {
struct lttng_condition parent;
+#include <common/macros.h>
#include <lttng/lttng.h>
/*
#include <lttng/lttng.h>
/*
#include <lttng/lttng.h>
#include <common/defaults.h>
#include <common/index/ctf-index.h>
#include <lttng/lttng.h>
#include <common/defaults.h>
#include <common/index/ctf-index.h>
+#include <common/macros.h>
#define RELAYD_VERSION_COMM_MAJOR VERSION_MAJOR
#define RELAYD_VERSION_COMM_MINOR VERSION_MINOR
#define RELAYD_VERSION_COMM_MAJOR VERSION_MAJOR
#define RELAYD_VERSION_COMM_MINOR VERSION_MINOR
#include <common/uri.h>
#include <common/defaults.h>
#include <common/compat/uuid.h>
#include <common/uri.h>
#include <common/defaults.h>
#include <common/compat/uuid.h>
+#include <common/macros.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netinet/in.h>
*/
#include <common/sessiond-comm/sessiond-comm.h>
*/
#include <common/sessiond-comm/sessiond-comm.h>
+#include <common/macros.h>