[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH for-4.15 5/5] tools/xenstored: Silence coverity when using xs_state_* structures



On 25.02.21 18:41, Julien Grall wrote:
From: Julien Grall <jgrall@xxxxxxxxxx>

Coverity will report unitialized values for every use of xs_state_*
structures in the save part. This can be prevented by using the [0]
rather than [] to define variable length array.

Coverity-ID: 1472398
Coverity-ID: 1472397
Coverity-ID: 1472396
Coverity-ID: 1472395
Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx>

Sorry, but Coverity is clearly wrong here.

Should we really modify our code to work around bugs in external
static code analyzers?


Juergen


---

 From my understanding, the tools and the hypervisor already rely on GNU
extensions. So the change should be fine.

If not, we can use the same approach as XEN_FLEX_ARRAY_DIM.
---
  tools/xenstore/include/xenstore_state.h | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/xenstore/include/xenstore_state.h 
b/tools/xenstore/include/xenstore_state.h
index ae0d053c8ffc..407d9e920c0f 100644
--- a/tools/xenstore/include/xenstore_state.h
+++ b/tools/xenstore/include/xenstore_state.h
@@ -86,7 +86,7 @@ struct xs_state_connection {
      uint16_t data_in_len;    /* Number of unprocessed bytes read from conn. */
      uint16_t data_resp_len;  /* Size of partial response pending for conn. */
      uint32_t data_out_len;   /* Number of bytes not yet written to conn. */
-    uint8_t  data[];         /* Pending data (read, written) + 0-7 pad bytes. 
*/
+    uint8_t  data[0];         /* Pending data (read, written) + 0-7 pad bytes. 
*/
  };
/* Watch: */
@@ -94,7 +94,7 @@ struct xs_state_watch {
      uint32_t conn_id;       /* Connection this watch is associated with. */
      uint16_t path_length;   /* Number of bytes of path watched (incl. 0). */
      uint16_t token_length;  /* Number of bytes of watch token (incl. 0). */
-    uint8_t data[];         /* Path bytes, token bytes, 0-7 pad bytes. */
+    uint8_t data[0];        /* Path bytes, token bytes, 0-7 pad bytes. */
  };
/* Transaction: */
@@ -125,7 +125,7 @@ struct xs_state_node {
  #define XS_STATE_NODE_TA_WRITTEN  0x0002
      uint16_t perm_n;        /* Number of permissions (0 in TA: node deleted). 
*/
      /* Permissions (first is owner, has full access). */
-    struct xs_state_node_perm perms[];
+    struct xs_state_node_perm perms[0];
      /* Path and data follows, plus 0-7 pad bytes. */
  };
  #endif /* XENSTORE_STATE_H */


Attachment: OpenPGP_0xB0DE9DD628BF132F.asc
Description: application/pgp-keys

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.