Coverity fixes for API socket 66/8666/2
authorChris Luke <chrisy@flirble.org>
Wed, 4 Oct 2017 17:59:14 +0000 (13:59 -0400)
committerFlorin Coras <florin.coras@gmail.com>
Fri, 6 Oct 2017 23:02:47 +0000 (23:02 +0000)
- Coverity whines about a zero-length field not being initialized.
  Change the struct setup to an initializer which will implicitly zero
  all unused fields, and add the coverity notation that should stop
  it whining. One or both of these should shut it up!
- Fix some incorrect use of ntohl that was tainting values; in these
  cases htonl should have been used, and avoid a double-swap.

Change-Id: I00493a77eb23a0b8feb647165ee349e1e9d5cfdb
Signed-off-by: Chris Luke <chrisy@flirble.org>
src/vlibapi/vat_helper_macros.h
src/vlibmemory/socket_client.c

index 5e7f108..fd2e563 100644 (file)
@@ -77,12 +77,14 @@ do {                                                            \
   socket_client_main_t *scm = &vam->socket_client_main;         \
   if (scm->socket_enable)                                       \
     {                                                           \
-      msgbuf_t msgbuf;                                          \
-                                                                \
-      msgbuf.q = 0;                                             \
-      msgbuf.gc_mark_timestamp = 0;                             \
-      msgbuf.data_len = ntohl(scm->socket_tx_nbytes);           \
+      msgbuf_t msgbuf =                                         \
+        {                                                       \
+          .q = 0,                                               \
+          .gc_mark_timestamp = 0,                               \
+          .data_len = htonl(scm->socket_tx_nbytes),             \
+        };                                                      \
                                                                 \
+      /* coverity[UNINIT] */                                    \
       n = write (scm->socket_fd, &msgbuf, sizeof (msgbuf));     \
       if (n < sizeof (msgbuf))                                  \
         clib_unix_warning ("socket write (msgbuf)");            \
index 8519e7f..b60fd4f 100644 (file)
@@ -166,16 +166,16 @@ vl_socket_client_connect (socket_client_main_t * scm, char *socket_path,
 
   mbp = (msgbuf_t *) buffer;
   mbp->q = 0;
-  mbp->data_len = ntohl (sizeof (*mp));
+  mbp->data_len = htonl (sizeof (*mp));
   mbp->gc_mark_timestamp = 0;
 
   mp = (vl_api_sockclnt_create_t *) mbp->data;
-  mp->_vl_msg_id = ntohs (VL_API_SOCKCLNT_CREATE);
+  mp->_vl_msg_id = htons (VL_API_SOCKCLNT_CREATE);
   strncpy ((char *) mp->name, client_name, sizeof (mp->name) - 1);
   mp->name[sizeof (mp->name) - 1] = 0;
   mp->context = 0xfeedface;
 
-  n = write (scm->socket_fd, mbp, sizeof (*mbp) + ntohl (mbp->data_len));
+  n = write (scm->socket_fd, mbp, sizeof (*mbp) + sizeof (*mp));
   if (n < 0)
     {
       clib_unix_warning ("socket write (msg)");