Fix: evaluation: dereference before NULL check in create_from_payload
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 23 Jun 2020 22:06:53 +0000 (18:06 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 4 Aug 2020 23:40:32 +0000 (19:40 -0400)
An evaluation payload view is created from the view passed to
lttng_evaluation_create_from_payload. Since a view contains a const
copy of the _fds array, it must be initialized as the declaration site.

However, src_view is checked for NULL after the initalization. Coverity
rightfully warns that:

  1429799 Dereference before null check

  There may be a null pointer dereference, or else the comparison against
  null is unnecessary.

  In lttng_evaluation_create_from_payload: All paths that lead to this
  null pointer comparison already dereference the pointer
  earlier (CWE-476)

This is not reachable right now, but it is fixed to silence the warning
and prevent future mistakes.

Reported-by: Coverity Scan
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I3ceace4117ff54265b1f0cf6a4c638aec95f2879

src/common/evaluation.c

index cb379168e3a20ddab5167add1d839c82519d6cf3..e936bdd91db3b12f1aeab97603df36649529b4f1 100644 (file)
@@ -53,9 +53,10 @@ ssize_t lttng_evaluation_create_from_payload(
 {
        ssize_t ret, evaluation_size = 0;
        const struct lttng_evaluation_comm *evaluation_comm;
-       struct lttng_payload_view evaluation_view =
-                       lttng_payload_view_from_view(
-                                       src_view, sizeof(*evaluation_comm), -1);
+       struct lttng_payload_view evaluation_view = src_view ?
+                       lttng_payload_view_from_view(src_view,
+                                       sizeof(*evaluation_comm), -1) :
+                       (typeof(evaluation_view)) {};
 
        if (!src_view || !evaluation) {
                ret = -1;
This page took 0.027065 seconds and 5 git commands to generate.