Coverity fixes for Linux test examples
authorJustin Sobota <jsobota@ti.com>
Wed, 14 Jan 2015 01:51:10 +0000 (20:51 -0500)
committerJustin Sobota <jsobota@ti.com>
Wed, 14 Jan 2015 01:51:10 +0000 (20:51 -0500)
docs/ReleaseNotes_RM.doc
docs/ReleaseNotes_RM.pdf
package.xdc
test/armv7/linux/rm_dsp_client_test.c
test/armv7/linux/rm_linux_client_test.c
test/armv7/linux/rm_server.c
test/armv7/linux/rm_server_osal.c
test/armv7/linux/sockutils.c

index aea43baa09a4f511e313f1c6a2fa291a1ab45042..a1da1fd29006d1b61cf6828297e54affc463af19 100644 (file)
Binary files a/docs/ReleaseNotes_RM.doc and b/docs/ReleaseNotes_RM.doc differ
index 3062d1345ac89bc5194c1d273df63392208a444c..e7edde5020d5074afc44514f3d8063efd7d4617d 100644 (file)
Binary files a/docs/ReleaseNotes_RM.pdf and b/docs/ReleaseNotes_RM.pdf differ
index 4cf527caa9fbcbc4af5843229693cf1c5dde8b49..19892aab1f86476dbfc49e11eefd21f3df83aacf 100644 (file)
@@ -6,9 +6,9 @@
  * DESCRIPTION: \r
  *  This file contains the package specification for the RM library\r
  *\r
- * Copyright (C) 2012-2014, Texas Instruments, Inc.\r
+ * Copyright (C) 2012-2015, Texas Instruments, Inc.\r
  *****************************************************************************/\r
 \r
-package ti.drv.rm[2, 1, 0, 7] {\r
+package ti.drv.rm[2, 1, 0, 8] {\r
     module Settings;\r
 }\r
index 19d72b8e2b86579eb9f341378661c6fba3bda39e..a88c04a168bd967d5e83a4bd64d5161a4f097a8d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
+ * Copyright (c) 2012-2015, Texas Instruments Incorporated
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 #include <ti/drv/rm/rm_transport.h>
 
 /* App defines:  Must match on remote proc side: */
-#define HEAPID               0u
-#define CLIENT_MESSAGEQ_NAME "RM_CLIENT"
-#define SERVER_MESSAGEQ_NAME "RM_SERVER"
+#define HEAPID                0u
+#define MAX_MESSAGEQ_NAME_LEN 32u
+#define CLIENT_MESSAGEQ_NAME  "RM_CLIENT"
+#define SERVER_MESSAGEQ_NAME  "RM_SERVER"
 
 #define PROC_ID_DEFAULT      1     /* Host is zero, remote cores start at 1 */
 
@@ -68,23 +69,23 @@ typedef struct {
 
 Int rmServerExchange_execute(UInt16 procId)
 {
-    int32_t           status = 0;
-    int               err;
-    MessageQ_Msg      msg = NULL;
-    MessageQ_Params   msgParams;
-    MessageQ_QueueId  queueId = MessageQ_INVALIDMESSAGEQ;
-    MessageQ_Handle   msgqHandle;
-    char              remoteQueueName[64];
-    MessageQ_Msg      rmMsg;
-    Rm_Packet        *rmPkt;
-    int               rm_pkt_len;
-    sock_h            sock_to_server;
-    sock_name_t       local_sock_name;
-    sock_name_t       server_sock;
-    sock_name_t       server_sock_addr;
+    int32_t             status = 0;
+    int                 err;
+    MessageQ_Msg        msg = NULL;
+    MessageQ_Params     msgParams;
+    MessageQ_QueueId    queueId = MessageQ_INVALIDMESSAGEQ;
+    MessageQ_Handle     msgqHandle;
+    char                remoteQueueName[64];
+    MessageQ_Msg        rmMsg;
+    Rm_Packet          *rmPkt;
+    int                 rm_pkt_len;
+    sock_h              sock_to_server;
+    sock_name_t         local_sock_name;
+    sock_name_t         server_sock;
+    sock_name_t         server_sock_addr;
     struct sockaddr_un  server_addr;
-    char              client_ex_sock_name[] = "/tmp/var/run/rm/rm_dsp_client_exchange";
-    char              server_sock_name[] = RM_SERVER_SOCKET_NAME;    
+    char                client_ex_sock_name[] = "/tmp/var/run/rm/rm_dsp_client_exchange";
+    char                server_sock_name[] = RM_SERVER_SOCKET_NAME;    
 
     printf("Entered rmServerExchange_execute\n");
  
@@ -99,8 +100,8 @@ Int rmServerExchange_execute(UInt16 procId)
        printf("Local MessageQId: 0x%x\n", MessageQ_getQueueId(msgqHandle));
     }
 
-    sprintf(remoteQueueName, "%s_%s", CLIENT_MESSAGEQ_NAME,
-            MultiProc_getName(procId));
+    snprintf(remoteQueueName, MAX_MESSAGEQ_NAME_LEN, "%s_%s", CLIENT_MESSAGEQ_NAME,
+             MultiProc_getName(procId));
 
     /* Poll until remote side has it's messageQ created before we send: */
     do {
index 0445f5aad55e1eb22821520f69f8c584337de12b..b3d658867912521ce2e43be5bd4285f3f6bd71e7 100644 (file)
@@ -7,7 +7,7 @@
  *
  *  ============================================================================
  *
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
+ * Copyright (c) 2012-2015, Texas Instruments Incorporated
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -311,10 +311,11 @@ Rm_Packet *transportAlloc(Rm_AppTransportHandle appTransport, uint32_t pktSize,
 
 void transportFree (Rm_Packet *rm_pkt)
 {
-    uint32_t pkt_size = rm_pkt->pktLenBytes;
+    uint32_t pkt_size;
     int32_t  status;
 
     if (rm_pkt) {
+        pkt_size = rm_pkt->pktLenBytes;
         free (rm_pkt);
     }         
 }
index 980e3b64b122d0c79cc1f6d7d0fe8860a54191f3..6e146167b3a205c84f1a10ce4341cc3f7a8743f4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013-2014 Texas Instruments Incorporated - http://www.ti.com/
+ * Copyright (C) 2013-2015 Texas Instruments Incorporated - http://www.ti.com/
  *
  *
  *  Redistribution and use in source and binary forms, with or without
@@ -130,7 +130,7 @@ void rmsrv_log(const int loglevel, const char* functionName, const char* fileNam
     va_list     args;
     struct stat fbuf;
 
-    sprintf(lineno_a, "%d", lineNo);
+    snprintf(lineno_a, MAX_PRE_LOG_BUF_LEN, "%d", lineNo);
 
     rmsrv_log_buf[0] = 0;
 
@@ -151,9 +151,10 @@ void rmsrv_log(const int loglevel, const char* functionName, const char* fileNam
     va_end(args);
 
     /* logfile reset if going over max_len */
-    fstat(fileno(rmsrv_cfg.logfile_p), &fbuf);
-    if ((fbuf.st_size + strlen(rmsrv_log_buf)) > rmsrv_cfg.logfile_max_len) {
-        freopen(RMSERVER_DAEMON_LOG_FILE_NAME, "w+", rmsrv_cfg.logfile_p);
+    if (fstat(fileno(rmsrv_cfg.logfile_p), &fbuf) == 0) {
+        if ((fbuf.st_size + strlen(rmsrv_log_buf)) > rmsrv_cfg.logfile_max_len) {
+            freopen(RMSERVER_DAEMON_LOG_FILE_NAME, "w+", rmsrv_cfg.logfile_p);
+        }
     }
 
     fprintf(rmsrv_cfg.logfile_p, "%s", rmsrv_log_buf);
@@ -385,17 +386,17 @@ int main(int argc, char *argv[])
     int          fd;
     struct stat  file_stat;
     pid_t        pid;
-    char        *grl_file;
-    char        *policy_file;
+    char        *grl_file = NULL;
+    char        *policy_file = NULL;
     char        *lin_dtb_file = NULL;
-    void        *grl;
-    void        *policy;
+    void        *grl = NULL;
+    void        *policy = NULL;
     void        *lin_dtb = NULL;
     
     const struct option longopts[] =
     {
         {"nodaemon", no_argument,       0, 'n'},
-        {"kill",        no_argument,       0, 'k'},
+        {"kill",     no_argument,       0, 'k'},
         {"help",     no_argument,       0, 'h'},
         {"lindtb",   required_argument, 0, 'l'},
         {"logsize",  required_argument, 0, 's'},
@@ -587,7 +588,13 @@ int main(int argc, char *argv[])
         /* Send OK to parent process */
         daemon_retval_send(0);
     }
-
+    else {
+        if (kill) {
+            printf("Can't kill undaemonized RM server\n");
+            exit(EXIT_FAILURE);
+        }
+    }
+    
     rm_server_run(grl, policy, lin_dtb, daemonize);
 
 close_n_exit:
index cd7be6015fedb4bdab0fd0eb642d370ada2cbd1a..8f18f10bf08f5d8fc672e525fdc5396105a6f8df 100644 (file)
@@ -6,7 +6,7 @@
  *
  *  \par
  *  ============================================================================
- *  @n   (C) Copyright 2012-2014, Texas Instruments, Inc.
+ *  @n   (C) Copyright 2012-2015, Texas Instruments, Inc.
  *
  *  Redistribution and use in source and binary forms, with or without
  *  modification, are permitted provided that the following conditions
@@ -234,9 +234,10 @@ void Osal_rmLog (char *fmt, ... )
     va_end(ap);
 
     /* logfile reset if going over max_len */
-    fstat(fileno(rmsrv_cfg.logfile_p), &fbuf);
-    if ((fbuf.st_size + strlen(rmsrv_log_buf)) > rmsrv_cfg.logfile_max_len) {
-        freopen(RMSERVER_DAEMON_LOG_FILE_NAME, "w+", rmsrv_cfg.logfile_p);
+    if (fstat(fileno(rmsrv_cfg.logfile_p), &fbuf) == 0) {
+        if ((fbuf.st_size + strlen(rmsrv_log_buf)) > rmsrv_cfg.logfile_max_len) {
+            freopen(RMSERVER_DAEMON_LOG_FILE_NAME, "w+", rmsrv_cfg.logfile_p);
+        }
     }
 
     fprintf(rmsrv_cfg.logfile_p, "%s", rmsrv_log_buf);
index ee557f25769463ec4aae4b08e71ca774340b1bf5..57cdacb60f7462c41422369610d5d03c5ef82628 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
+ * Copyright (C) 2013-2015 Texas Instruments Incorporated - http://www.ti.com/
  *
  *
  *  Redistribution and use in source and binary forms, with or without
@@ -94,15 +94,15 @@ sock_h sock_open (sock_name_t *sock_name)
 
        sd->fd =  socket(AF_UNIX, SOCK_DGRAM, 0);
        if (sd->fd < 0) {
-               error_msg("can't open socket (error: %s)",
-                               sd->addr.sun_path, strerror(errno));
+               error_msg("can't open socket %s (error: %s)",
+                                 sd->addr.sun_path, strerror(errno));
                goto check_n_return;
        }
 
        unlink(sd->addr.sun_path);
        if (bind(sd->fd, (struct sockaddr *) &sd->addr, sizeof(struct sockaddr_un)) < 0) {
-               error_msg("can't bind socket (error: %s)",
-                               sd->addr.sun_path, strerror(errno));
+               error_msg("can't bind socket %s (error: %s)",
+                                 sd->addr.sun_path, strerror(errno));
                goto check_n_return;
        }
 
@@ -157,8 +157,8 @@ int sock_send (sock_h handle, const char *data, int length,
        } else {
                fd =  socket(AF_UNIX, SOCK_DGRAM, 0);
                if (fd < 0) {
-                       error_msg("can't open socket (error: %s)",
-                                       to_addr.sun_path, strerror(errno));
+                       error_msg("can't open socket %s (error: %s)",
+                                         to_addr.sun_path, strerror(errno));
                        return -1;
                }
        }
@@ -166,11 +166,15 @@ int sock_send (sock_h handle, const char *data, int length,
        if (sendto (fd, data, length, 0, (struct sockaddr *) &to_addr,
                                sizeof(struct sockaddr_un)) < 0) {
                error_msg("can't send data to %s (error: %s)",
-                               to_addr.sun_path, strerror(errno));
+                                 to_addr.sun_path, strerror(errno));
                return -1;
 
        }
 
+    if (!sd) {
+        close(fd);
+    }
+
        return 0;
 }
 
@@ -237,7 +241,7 @@ int sock_recv (sock_h handle, char *data, int length, sock_name_t *from)
        }
 
        if (from) {
-               if((from->type = sock_addr_e) && (from->s.addr))
+               if((from->type == sock_addr_e) && (from->s.addr))
                        from_length = sizeof(struct sockaddr_un);
                else {
                        error_msg("invalid from parameter");