BIOS: NameServerMessageQ names need proper termination
authorArnie Reynoso <arnier@ti.com>
Thu, 13 Mar 2014 20:58:02 +0000 (13:58 -0700)
committerChris Ring <cring@ti.com>
Mon, 17 Mar 2014 19:38:48 +0000 (12:38 -0700)
The NameServerMessageQ instanceName and name strings weren't being
properly null terminated when the names were 1 character less than the
maximum size. This addresses the following bug:

SDOCM00106336: NameServerMessageQ copy of name is not copying null
terminated character

packages/ti/sdo/ipc/nsremote/NameServerMessageQ.c

index 9b36dbfc06939efc4e50b20ba9147734f7cee2a0..749e532a1efada5a3495df1fac1af611d45662cf 100644 (file)
@@ -243,7 +243,8 @@ Int NameServerMessageQ_get(NameServerMessageQ_Object *obj,
     Assert_isTrue(len < MAXNAMEINCHAR, NameServerMessageQ_A_nameIsTooLong);
 
     /* copy the name of instance into putMsg */
-    strncpy((Char *)msg->instanceName, instanceName, len);
+    strncpy((Char *)msg->instanceName, instanceName, MAXNAMEINCHAR - 1);
+    ((Char *)msg->instanceName) [MAXNAMEINCHAR - 1] = '0';
 
     /* get the length of name */
     len = strlen(name);
@@ -252,7 +253,8 @@ Int NameServerMessageQ_get(NameServerMessageQ_Object *obj,
     Assert_isTrue(len < MAXNAMEINCHAR, NameServerMessageQ_A_nameIsTooLong);
 
     /* copy the name of nameserver entry into putMsg */
-    strncpy((Char *)msg->name, name, len);
+    strncpy((Char *)msg->name, name, MAXNAMEINCHAR - 1);
+    ((Char *)msg->name) [MAXNAMEINCHAR - 1] = '0';
 
     /* determine the queueId based upon the processor */
     queueId = MessageQ_openQueueId(MESSAGEQ_INDEX, obj->remoteProcId);