Linux: Fix Static Analysis Reported Issues in IPC 3.45 3.45.00.00 3.45.00.00_eng
authorAngela Stegmaier <angelabaker@ti.com>
Wed, 18 Jan 2017 20:01:13 +0000 (14:01 -0600)
committerAngela Stegmaier <angelabaker@ti.com>
Tue, 31 Jan 2017 04:32:38 +0000 (22:32 -0600)
This patch addresses the following static analysis reported
issues:

In linux/src/api/gates/GateMP.c:
Possible Null Pointer Dereference in GateMP_Instance_finalize

In linux/src/api/gates/GateMutex.c:
Possible Null Pointer Dereference in GateMutex_delete

In linux/src/api/MessageQ.c:
Uninitialized Variable in MessageQ_free

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
linux/src/api/MessageQ.c
linux/src/api/gates/GateMP.c
linux/src/api/gates/GateMutex.c

index db96b241156963cc831833d95edd0de733991b04..945712ea3c8d090570e22f47d3db8657ba414a75 100644 (file)
@@ -1157,10 +1157,9 @@ Int MessageQ_free(MessageQ_Msg msg)
     }
     else {
         heap = (IHeap_Handle)MessageQ_module->heaps[msg->heapId];
+        IHeap_free(heap, (void *)msg);
     }
 
-    IHeap_free(heap, (void *)msg);
-
     return (status);
 }
 
index 9a0024fc45fde665df8a68f884d8961e7b3330d6..4aaadbd5109e9cec171b4a84bd8ac24d666b9694 100644 (file)
@@ -904,7 +904,7 @@ static Void GateMP_Instance_finalize(GateMP_Object *obj, Int status)
     /* TODO: close/delete local gate */
 
     /* clear the handle array entry in local memory */
-    if (obj->resourceId != (UInt)-1) {
+    if (remoteGates && (obj->resourceId != (UInt)-1)) {
         remoteGates[obj->resourceId] = NULL;
     }
 
index 6cdd10ae5c0fd72c5a444c2755fa0660bd26dc43..bb5f21ccc9364288f0d5c7b30e8b05965cf060d8 100644 (file)
@@ -102,7 +102,7 @@ GateMutex_Handle GateMutex_create(const GateMutex_Params * params,
 
 Int GateMutex_delete(GateMutex_Handle * handle)
 {
-    GateMutex_Object * obj = (GateMutex_Object *)*handle;
+    GateMutex_Object * obj = NULL;
 
     if (handle == NULL) {
         return GateMutex_E_INVALIDARG;
@@ -110,6 +110,8 @@ Int GateMutex_delete(GateMutex_Handle * handle)
     if (*handle == NULL) {
         return GateMutex_E_INVALIDARG;
     }
+
+    obj = (GateMutex_Object *)*handle;
     pthread_mutex_destroy(&(obj->mutex));
     free(*handle);
     *handle = NULL;