Fix: ctf: assert that name is not NULL in warn_meaningless_field()
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 4 Sep 2019 16:13:39 +0000 (12:13 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 3 Oct 2019 14:45:10 +0000 (10:45 -0400)
gcc 9.1 reports that warn_meaningless_field's `name` is sometimes
NULL when it is inlined in warn_meaningless_fields(), itself
inlined in ctf_trace_class_warn_meaningless_header_fields() at
line 131.

The the only call site using a `NULL` name will have
`fc->type == CTF_FIELD_CLASS_TYPE_STRUCT`.

Add a `BT_ASSERT(name)` to warn_meaningless_field() and a comment
indicating that `name` is guaranteed to be non-NULL whenever the field
class is not a structure.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I323b9f390f80dbd898a69664082fd07d5cc2fc86
Reviewed-on: https://review.lttng.org/c/babeltrace/+/2000
Reviewed-by: Simon Marchi <simon.marchi@efficios.com>
Tested-by: jenkins <jenkins@lttng.org>
src/plugins/ctf/common/metadata/ctf-meta-warn-meaningless-header-fields.c

index ebd995f62ecf71a677ea3c5ee1d7dec7c1fd5154..9a9d765a7f51c6d8f0bc52828afb78f7064a184f 100644 (file)
@@ -32,6 +32,7 @@ static inline
 void warn_meaningless_field(const char *name, const char *scope_name,
                struct meta_log_config *log_cfg)
 {
+       BT_ASSERT(name);
        BT_COMP_LOGW("User field found in %s: ignoring: name=\"%s\"",
                scope_name, name);
 }
@@ -46,6 +47,11 @@ void warn_meaningless_fields(struct ctf_field_class *fc, const char *name,
                goto end;
        }
 
+       /*
+        * 'name' is guaranteed to be non-NULL whenever the field class is not a
+        * structure. In the case of a structure field class, its members' names
+        * are used.
+        */
        switch (fc->type) {
        case CTF_FIELD_CLASS_TYPE_FLOAT:
        case CTF_FIELD_CLASS_TYPE_STRING:
This page took 0.026312 seconds and 4 git commands to generate.