From 4c2dff5408185fa409497bc1162a892cf04f4d9c Mon Sep 17 00:00:00 2001 From: Peter Denison Date: Thu, 22 May 2008 16:49:15 +0000 Subject: [PATCH] bug fix in XPS driver, previously this only initialised the memory for string arguments if this argument existed, causing junk to be sent down to the XPS, sometimes overflowing its string buffer. This fix moves the memset command up so this is done even for blank arguments --- motorApp/NewportSrc/XPS_C8_drivers.cpp | 64 +++++++++++++------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/motorApp/NewportSrc/XPS_C8_drivers.cpp b/motorApp/NewportSrc/XPS_C8_drivers.cpp index 4bdd4431..0eb71607 100644 --- a/motorApp/NewportSrc/XPS_C8_drivers.cpp +++ b/motorApp/NewportSrc/XPS_C8_drivers.cpp @@ -670,66 +670,66 @@ int __stdcall EventExtendedConfigurationTriggerSet (int SocketIndex, int NbEleme char *list_r; char (*stringArray0)[SIZE_NAME]; - stringArray0 = new char [NbElements][SIZE_NAME]; + stringArray0 = new char [NbElements][SIZE_NAME]; + memset(stringArray0,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, ExtendedEventNameList, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray0[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray0[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; } char (*stringArray1)[SIZE_NAME]; - stringArray1 = new char [NbElements][SIZE_NAME]; + stringArray1 = new char [NbElements][SIZE_NAME]; + memset(stringArray1,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, EventParameter1List, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray1[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray1[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; } char (*stringArray2)[SIZE_NAME]; - stringArray2 = new char [NbElements][SIZE_NAME]; + stringArray2 = new char [NbElements][SIZE_NAME]; + memset(stringArray2,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, EventParameter2List, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray2[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray2[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; } char (*stringArray3)[SIZE_NAME]; - stringArray3 = new char [NbElements][SIZE_NAME]; + stringArray3 = new char [NbElements][SIZE_NAME]; + memset(stringArray3,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, EventParameter3List, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray3[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray3[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; } char (*stringArray4)[SIZE_NAME]; - stringArray4 = new char [NbElements][SIZE_NAME]; + stringArray4 = new char [NbElements][SIZE_NAME]; + memset(stringArray4,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, EventParameter4List, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray4[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray4[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; @@ -843,66 +843,66 @@ int __stdcall EventExtendedConfigurationActionSet (int SocketIndex, int NbElemen char *list_r; char (*stringArray0)[SIZE_NAME]; - stringArray0 = new char [NbElements][SIZE_NAME]; + stringArray0 = new char [NbElements][SIZE_NAME]; + memset(stringArray0,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, ExtendedActionNameList, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray0[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray0[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; } char (*stringArray1)[SIZE_NAME]; - stringArray1 = new char [NbElements][SIZE_NAME]; + stringArray1 = new char [NbElements][SIZE_NAME]; + memset(stringArray1,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, ActionParameter1List, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray1[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray1[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; } char (*stringArray2)[SIZE_NAME]; - stringArray2 = new char [NbElements][SIZE_NAME]; + stringArray2 = new char [NbElements][SIZE_NAME]; + memset(stringArray2,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, ActionParameter2List, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray2[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray2[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; } char (*stringArray3)[SIZE_NAME]; - stringArray3 = new char [NbElements][SIZE_NAME]; + stringArray3 = new char [NbElements][SIZE_NAME]; + memset(stringArray3,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, ActionParameter3List, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray3[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray3[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; } char (*stringArray4)[SIZE_NAME]; - stringArray4 = new char [NbElements][SIZE_NAME]; + stringArray4 = new char [NbElements][SIZE_NAME]; + memset(stringArray4,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, ActionParameter4List, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray4[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray4[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; @@ -1260,14 +1260,14 @@ int __stdcall GatheringConfigurationSet (int SocketIndex, int NbElements, char * char *list_r; char (*stringArray0)[SIZE_NAME]; - stringArray0 = new char [NbElements][SIZE_NAME]; + stringArray0 = new char [NbElements][SIZE_NAME]; + memset(stringArray0,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, TypeList, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray0[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray0[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; @@ -1514,14 +1514,14 @@ int __stdcall GatheringExternalConfigurationSet (int SocketIndex, int NbElements char *list_r; char (*stringArray0)[SIZE_NAME]; - stringArray0 = new char [NbElements][SIZE_NAME]; + stringArray0 = new char [NbElements][SIZE_NAME]; + memset(stringArray0,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, TypeList, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray0[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray0[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; @@ -1785,14 +1785,14 @@ int __stdcall GPIOAnalogGet (int SocketIndex, int NbElements, char * GPIONameLis char *list_r; char (*stringArray0)[SIZE_NAME]; - stringArray0 = new char [NbElements][SIZE_NAME]; + stringArray0 = new char [NbElements][SIZE_NAME]; + memset(stringArray0,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, GPIONameList, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray0[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray0[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; @@ -1869,14 +1869,14 @@ int __stdcall GPIOAnalogSet (int SocketIndex, int NbElements, char * GPIONameLis char *list_r; char (*stringArray0)[SIZE_NAME]; - stringArray0 = new char [NbElements][SIZE_NAME]; + stringArray0 = new char [NbElements][SIZE_NAME]; + memset(stringArray0,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, GPIONameList, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray0[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray0[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; @@ -1938,14 +1938,14 @@ int __stdcall GPIOAnalogGainGet (int SocketIndex, int NbElements, char * GPIONam char *list_r; char (*stringArray0)[SIZE_NAME]; - stringArray0 = new char [NbElements][SIZE_NAME]; + stringArray0 = new char [NbElements][SIZE_NAME]; + memset(stringArray0,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, GPIONameList, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray0[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray0[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++; @@ -2022,14 +2022,14 @@ int __stdcall GPIOAnalogGainSet (int SocketIndex, int NbElements, char * GPIONam char *list_r; char (*stringArray0)[SIZE_NAME]; - stringArray0 = new char [NbElements][SIZE_NAME]; + stringArray0 = new char [NbElements][SIZE_NAME]; + memset(stringArray0,'\0', SIZE_NAME*NbElements); indice = 0; strncpyWithEOS(list, GPIONameList, SIZE_NOMINAL, SIZE_NOMINAL); list_r = NULL; token = strtok_r (list, seps, &list_r); while ((NULL != token) && (indice < NbElements)) { - memset(stringArray0[indice],'\0', SIZE_NAME); strncpyWithEOS(stringArray0[indice], token, SIZE_NAME, SIZE_NAME); token = strtok_r (NULL, seps, &list_r); indice++;