TransportRpmsg: Add NULL check to avoid NULL pointer access
[ipc/ipcdev.git] / packages / ti / ipc / transports / TransportRpmsg.c
index c20b62ad68c85ab7df6051408f964d4c6c625998..365cca05b2fe7f06463f27291e968e62ede33917 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2013, Texas Instruments Incorporated
+ * Copyright (c) 2012-2019, Texas Instruments Incorporated
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -104,7 +104,11 @@ Int TransportRpmsg_Instance_init(TransportRpmsg_Object *obj,
     obj->remoteProcId = remoteProcId;
 
     /* Announce our "MessageQ" service to the HOST: */
+#ifdef RPMSG_NS_2_0
     NameMap_register(RPMSG_SOCKET_NAME, RPMSG_SOCKET_NAME, RPMSG_MESSAGEQ_PORT);
+#else
+    NameMap_register(RPMSG_SOCKET_NAME, RPMSG_MESSAGEQ_PORT);
+#endif
 
     /* Associate incomming messages with this transport's callback fxn: */
     obj->msgqHandle = RPMessage_create(RPMSG_MESSAGEQ_PORT,
@@ -143,8 +147,12 @@ Void TransportRpmsg_Instance_finalize(TransportRpmsg_Object *obj, Int status)
     Log_print0(Diags_ENTRY, "--> "FXNN);
 
     /* Announce our "MessageQ" service is going away: */
+#ifdef RPMSG_NS_2_0
     NameMap_unregister(RPMSG_SOCKET_NAME, RPMSG_SOCKET_NAME,
             RPMSG_MESSAGEQ_PORT);
+#else
+    NameMap_unregister(RPMSG_SOCKET_NAME, RPMSG_MESSAGEQ_PORT);
+#endif
 
     switch(status) {
         case 0: /* MessageQ_registerTransport succeeded */
@@ -298,6 +306,10 @@ static Void transportCallbackFxn(RPMessage_Handle msgq, UArg arg, Ptr data,
 
     /* Make sure buf is not NULL */
     Assert_isTrue(buf != NULL, NULL);
+    if (buf == NULL) {
+        Log_print0(Diags_INFO, FXNN" MessageQ_alloc failed \n");
+        goto exit;
+    }
 
     /* copy the message to the buffer allocated. */
     memcpy((Ptr)buf, (Ptr)msg, msgSize);