IOT-1583: Removing /W3 warnings inside resource/csdk/stack/
authorPawel Winogrodzki <pawelwi@microsoft.com>
Wed, 1 Feb 2017 20:49:01 +0000 (12:49 -0800)
committerDan Mihai <Daniel.Mihai@microsoft.com>
Mon, 20 Feb 2017 23:05:59 +0000 (23:05 +0000)
Removing the /W3 warnings and adding a /WX option to prevent new
ones from being added inside the resource/csdk/stack/ directory.

Change-Id: I59190795483086a9f5a4f3293091e3a84e7013a7
Signed-off-by: Pawel Winogrodzki <pawelwi@microsoft.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/17057
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: Dan Mihai <Daniel.Mihai@microsoft.com>
25 files changed:
resource/csdk/logger/include/logger.h
resource/csdk/logger/src/logger.c
resource/csdk/resource-directory/src/internal/rd_database.c
resource/csdk/resource-directory/src/rd_client.c
resource/csdk/security/src/credresource.c
resource/csdk/security/tool/json2cbor.c
resource/csdk/stack/SConscript
resource/csdk/stack/include/internal/ocresource.h
resource/csdk/stack/include/internal/ocstackinternal.h
resource/csdk/stack/include/ocstack.h
resource/csdk/stack/samples/linux/SimpleClientServer/occlientbasicops.cpp
resource/csdk/stack/samples/linux/SimpleClientServer/ocserver.cpp
resource/csdk/stack/samples/linux/SimpleClientServer/ocserver.h
resource/csdk/stack/samples/linux/SimpleClientServer/ocserverbasicops.cpp
resource/csdk/stack/samples/linux/SimpleClientServer/ocserverbasicops.h
resource/csdk/stack/samples/linux/SimpleClientServer/ocserverslow.cpp
resource/csdk/stack/samples/linux/SimpleClientServer/ocserverslow.h
resource/csdk/stack/samples/linux/secure/ocserverbasicops.cpp
resource/csdk/stack/samples/linux/secure/ocserverbasicops.h
resource/csdk/stack/src/ocpayload.c
resource/csdk/stack/src/ocresource.c
resource/csdk/stack/src/ocstack.c
resource/csdk/stack/src/oicresourcedirectory.c
resource/csdk/stack/test/SConscript
resource/csdk/stack/test/stacktests.cpp

index 548b37d..35a4e04 100644 (file)
@@ -107,7 +107,7 @@ void OCSetLogLevel(LogLevel level, bool hidePrivateLogEntries);
  * @param[in]    buffer     pointer to buffer of bytes
  * @param[in]    bufferSize max number of byte in buffer
  */
-void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, size_t bufferSize);
+void OCLogBuffer(LogLevel level, const char* tag, const uint8_t* buffer, size_t bufferSize);
 
 #define OCLog(level,tag,mes) LOG_(LOG_ID_MAIN, (level), (tag), mes)
 #define OCLogv(level,tag,fmt,args...) LOG_(LOG_ID_MAIN, (level),tag,fmt,##args)
@@ -163,7 +163,7 @@ void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, size_
      * @param buffer     - pointer to buffer of bytes
      * @param bufferSize - max number of byte in buffer
      */
-    void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, size_t bufferSize);
+    void OCLogBuffer(LogLevel level, const char* tag, const uint8_t* buffer, size_t bufferSize);
 #else  // For arduino platforms
     /**
      * Initialize the serial logger for Arduino
@@ -191,7 +191,7 @@ void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, size_
      * @param buffer     - pointer to buffer of bytes
      * @param bufferSize - max number of byte in buffer
      */
-    void OCLogBuffer(LogLevel level, const char *tag, const uint8_t *buffer, size_t bufferSize);
+    void OCLogBuffer(LogLevel level, const char* tag, const uint8_t* buffer, size_t bufferSize);
 
     /**
      * Output a variable argument list log string with the specified priority level.
index f34f434..afdcf49 100644 (file)
@@ -128,7 +128,7 @@ static oc_log_level LEVEL_XTABLE[] = {OC_LOG_DEBUG, OC_LOG_INFO,
  * @param buffer     - pointer to buffer of bytes
  * @param bufferSize - max number of byte in buffer
  */
-void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, size_t bufferSize)
+void OCLogBuffer(LogLevel level, const char* tag, const uint8_t* buffer, size_t bufferSize)
 {
     if (!buffer || !tag || (bufferSize == 0))
     {
@@ -140,14 +140,13 @@ void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, size_
     char lineBuffer[LINE_BUFFER_SIZE];
     memset(lineBuffer, 0, sizeof lineBuffer);
     size_t lineIndex = 0;
-    size_t i;
-    for (i = 0; i < bufferSize; i++)
+    for (size_t i = 0; i < bufferSize; i++)
     {
         // Format the buffer data into a line
-        snprintf(&lineBuffer[lineIndex*3], sizeof(lineBuffer)-lineIndex*3, "%02X ", buffer[i]);
+        snprintf(&lineBuffer[lineIndex * 3], sizeof(lineBuffer) - lineIndex * 3, "%02X ", buffer[i]);
         lineIndex++;
         // Output 16 values per line
-        if (((i+1)%16) == 0)
+        if (((i + 1) % 16) == 0)
         {
             OCLogv(level, tag, "%s", lineBuffer);
             memset(lineBuffer, 0, sizeof lineBuffer);
index f9d8f91..3e3ed87 100644 (file)
@@ -148,7 +148,7 @@ OCStackResult OCRDDatabaseClose()
     return OC_STACK_OK;
 }
 
-static int storeResourceType(char **resourceTypes, size_t size, uint8_t rowid)
+static int storeResourceType(char **resourceTypes, size_t size, sqlite3_int64 rowid)
 {
     int res = 1;
     VERIFY_SQLITE(sqlite3_exec(gRDDB, "BEGIN TRANSACTION", NULL, NULL, NULL));
@@ -158,7 +158,7 @@ static int storeResourceType(char **resourceTypes, size_t size, uint8_t rowid)
     sqlite3_stmt *stmt = 0;
 
     VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, deleteRT, strlen(deleteRT) + 1, &stmt, NULL));
-    VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+    VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
     res = sqlite3_step(stmt);
     VERIFY_SQLITE(sqlite3_finalize(stmt));
     if (res != SQLITE_DONE)
@@ -174,7 +174,7 @@ static int storeResourceType(char **resourceTypes, size_t size, uint8_t rowid)
         {
             VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@resourceType"),
                                             resourceTypes[i], strlen(resourceTypes[i]), SQLITE_STATIC));
-            VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+            VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
         }
         res = sqlite3_step(stmt);
         VERIFY_SQLITE(sqlite3_finalize(stmt));
@@ -191,7 +191,7 @@ static int storeResourceType(char **resourceTypes, size_t size, uint8_t rowid)
     return res;
 }
 
-static int storeInterfaceType(char **interfaceTypes, size_t size, uint8_t rowid)
+static int storeInterfaceType(char **interfaceTypes, size_t size, sqlite3_int64 rowid)
 {
     int res = 1;
     VERIFY_SQLITE(sqlite3_exec(gRDDB, "BEGIN TRANSACTION", NULL, NULL, NULL));
@@ -201,7 +201,7 @@ static int storeInterfaceType(char **interfaceTypes, size_t size, uint8_t rowid)
     sqlite3_stmt *stmt = 0;
 
     VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, deleteIF, strlen(deleteIF) + 1, &stmt, NULL));
-    VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+    VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
     res = sqlite3_step(stmt);
     VERIFY_SQLITE(sqlite3_finalize(stmt));
     if (res != SQLITE_DONE)
@@ -217,7 +217,7 @@ static int storeInterfaceType(char **interfaceTypes, size_t size, uint8_t rowid)
         {
             VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@interfaceType"),
                                             interfaceTypes[i], strlen(interfaceTypes[i]), SQLITE_STATIC));
-            VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+            VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
         }
         res = sqlite3_step(stmt);
         VERIFY_SQLITE(sqlite3_finalize(stmt));
@@ -233,7 +233,7 @@ static int storeInterfaceType(char **interfaceTypes, size_t size, uint8_t rowid)
     return res;
 }
 
-static int storeLinkPayload(OCRepPayload *rdPayload, int64_t rowid)
+static int storeLinkPayload(OCRepPayload *rdPayload, sqlite3_int64 rowid)
 {
     int res = 1 ;
     size_t j = 0;
@@ -269,7 +269,7 @@ static int storeLinkPayload(OCRepPayload *rdPayload, int64_t rowid)
             VERIFY_SQLITE(sqlite3_exec(gRDDB, "BEGIN TRANSACTION", NULL, NULL, NULL));
 
             OCRepPayload *link = links->arr.objArray[i];
-            VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+            VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
             char *uri = NULL;
             if (OCRepPayloadGetPropString(link, OC_RSRVD_HREF, &uri))
             {
@@ -286,7 +286,7 @@ static int storeLinkPayload(OCRepPayload *rdPayload, int64_t rowid)
 
             VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, updateDeviceLLList, strlen(updateDeviceLLList) + 1,
                                              &stmt, NULL));
-            VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+            VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
             if (uri)
             {
                 VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@uri"),
@@ -295,10 +295,10 @@ static int storeLinkPayload(OCRepPayload *rdPayload, int64_t rowid)
             OCRepPayload *p = NULL;
             if (OCRepPayloadGetPropObject(link, OC_RSRVD_POLICY, &p))
             {
-                int64_t bm = 0;
+                sqlite3_int64 bm = 0;
                 if (OCRepPayloadGetPropInt(p, OC_RSRVD_BITMAP, &bm))
                 {
-                    VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@bm"), bm));
+                    VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@bm"), bm));
                 }
             }
             size_t mtDim[MAX_REP_ARRAY_DEPTH] = {0};
@@ -323,7 +323,7 @@ static int storeLinkPayload(OCRepPayload *rdPayload, int64_t rowid)
             size_t itfDim[MAX_REP_ARRAY_DEPTH] = {0};
             const char *input = "SELECT ins FROM RD_DEVICE_LINK_LIST WHERE DEVICE_ID=@id AND href=@uri";
             VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, strlen(input) + 1, &stmt, NULL));
-            VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
+            VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@id"), rowid));
             if (uri)
             {
                 VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@uri"),
@@ -400,7 +400,7 @@ OCStackResult OCRDDatabaseStoreResources(OCRepPayload *payload, const OCDevAddr
     }
     if (ttl)
     {
-        VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@ttl"), ttl));
+        VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@ttl"), ttl));
     }
     VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@rdAddress"),
                                     rdAddress, strlen(rdAddress), SQLITE_STATIC));
@@ -422,7 +422,7 @@ OCStackResult OCRDDatabaseStoreResources(OCRepPayload *payload, const OCDevAddr
     }
     if (ttl)
     {
-        VERIFY_SQLITE(sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@ttl"), ttl));
+        VERIFY_SQLITE(sqlite3_bind_int64(stmt, sqlite3_bind_parameter_index(stmt, "@ttl"), ttl));
     }
     VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@rdAddress"),
                                     rdAddress, strlen(rdAddress), SQLITE_STATIC));
index 66284ba..26b3fe9 100644 (file)
@@ -217,7 +217,7 @@ static OCRepPayload *RDPublishPayloadCreate(const unsigned char *id,
                 OCRepPayloadSetStringArrayAsOwner(link, OC_RSRVD_INTERFACE, itf, ifDim);
             }
 
-            uint8_t ins = 0;
+            int64_t ins = 0;
             if (OC_STACK_OK == OCGetResourceIns(handle, &ins))
             {
                 OCRepPayloadSetPropInt(link, OC_RSRVD_INS, ins);
@@ -376,9 +376,9 @@ OCStackResult OCRDDeleteWithDeviceId(OCDoHandle *handle, const char *host,
     for (uint8_t j = 0; j < nHandles; j++)
     {
         OCResource *handle = (OCResource *) resourceHandles[j];
-        uint8_t ins = 0;
+        int64_t ins = 0;
         OCGetResourceIns(handle, &ins);
-        int lenBufferRequired = snprintf(queryParam + queryLength, MAX_URI_LENGTH - queryLength, "&ins=%d", ins);
+        int lenBufferRequired = snprintf((queryParam + queryLength), (MAX_URI_LENGTH - queryLength), "&ins=%lld", ins);
         if (lenBufferRequired >= (MAX_URI_LENGTH - queryLength) || lenBufferRequired < 0)
         {
             return OC_STACK_INVALID_URI;
index f7441a0..10099ae 100644 (file)
@@ -1375,8 +1375,12 @@ static uint16_t GetCredId()
 {
     //Sorts credential list in incremental order of credId
     /** @todo: Remove pragma for VS2013 warning; Investigate fixing LL_SORT macro */
-    #pragma warning(suppress:4133)
+#ifdef _MSC_VER
+#pragma warning(suppress:4133)
     LL_SORT(gCred, CmpCredId);
+#else
+    LL_SORT(gCred, CmpCredId);
+#endif
 
     OicSecCred_t *currentCred = NULL, *credTmp = NULL;
     uint16_t nextCredId = 1;
index 8431412..83ef28c 100644 (file)
@@ -376,8 +376,14 @@ OicSecAcl_t* JSONToAclBin(const char * jsonStr)
                 VERIFY_NOT_NULL(TAG, rsrc, ERROR);
 
 // Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
 #pragma warning(suppress : 4267)
                 cJSON *jsonRsrc = cJSON_GetArrayItem(jsonObj, idxx);
+
+#else
+                cJSON *jsonRsrc = cJSON_GetArrayItem(jsonObj, idxx);
+
+#endif
                 VERIFY_NOT_NULL(TAG, jsonRsrc, ERROR);
 
                 //href
@@ -407,8 +413,14 @@ OicSecAcl_t* JSONToAclBin(const char * jsonStr)
                     for(size_t i = 0; i < rsrc->typeLen; i++)
                     {
 // Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
 #pragma warning(suppress : 4267)
                         cJSON *jsonRsrcType = cJSON_GetArrayItem(jsonRsrcObj, i);
+
+#else
+                        cJSON *jsonRsrcType = cJSON_GetArrayItem(jsonRsrcObj, i);
+
+#endif
                         VERIFY_NOT_NULL(TAG, jsonRsrcType, ERROR);
                         rsrc->types[i] = OICStrdup(jsonRsrcType->valuestring);
                         VERIFY_NOT_NULL(TAG, (rsrc->types[i]), ERROR);
@@ -426,8 +438,14 @@ OicSecAcl_t* JSONToAclBin(const char * jsonStr)
                     for(size_t i = 0; i < rsrc->interfaceLen; i++)
                     {
 // Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
 #pragma warning(suppress : 4267)
                         cJSON *jsonInterface = cJSON_GetArrayItem(jsonRsrcObj, i);
+
+#else
+                        cJSON *jsonInterface = cJSON_GetArrayItem(jsonRsrcObj, i);
+
+#endif
                         VERIFY_NOT_NULL(TAG, jsonInterface, ERROR);
                         rsrc->interfaces[i] = OICStrdup(jsonInterface->valuestring);
                         VERIFY_NOT_NULL(TAG, (rsrc->interfaces[i]), ERROR);
@@ -455,8 +473,14 @@ OicSecAcl_t* JSONToAclBin(const char * jsonStr)
                 for(size_t i = 0; i < validityLen; i++)
                 {
 // Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
 #pragma warning(suppress : 4267)
                     jsonValidity = cJSON_GetArrayItem(jsonValidityObj, i);
+
+#else
+                    jsonValidity = cJSON_GetArrayItem(jsonValidityObj, i);
+
+#endif
                     VERIFY_NOT_NULL(TAG, jsonValidity, ERROR);
                     VERIFY_SUCCESS(TAG, (jsonValidity->type == cJSON_Array), ERROR);
 
@@ -489,8 +513,14 @@ OicSecAcl_t* JSONToAclBin(const char * jsonStr)
                         for(size_t i = 0; i < validity->recurrenceLen; i++)
                         {
 // Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
 #pragma warning(suppress : 4267)
                             jsonRecur = cJSON_GetArrayItem(jsonRecurObj, i);
+
+#else
+                            jsonRecur = cJSON_GetArrayItem(jsonRecurObj, i);
+
+#endif
                             VERIFY_NOT_NULL(TAG, jsonRecur, ERROR);
                             validity->recurrences[i] = OICStrdup(jsonRecur->valuestring);
                             VERIFY_NOT_NULL(TAG, validity->recurrences[i], ERROR);
@@ -558,8 +588,14 @@ OicSecDoxm_t* JSONToDoxmBin(const char * jsonStr)
         for (size_t i  = 0; i < doxm->oxmTypeLen ; i++)
         {
 // Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
 #pragma warning(suppress : 4267)
             cJSON *jsonOxmTy = cJSON_GetArrayItem(jsonObj, i);
+
+#else
+            cJSON *jsonOxmTy = cJSON_GetArrayItem(jsonObj, i);
+
+#endif
             VERIFY_NOT_NULL(TAG, jsonOxmTy, ERROR);
 
             jsonObjLen = strlen(jsonOxmTy->valuestring) + 1;
@@ -582,8 +618,14 @@ OicSecDoxm_t* JSONToDoxmBin(const char * jsonStr)
         for (size_t i  = 0; i < doxm->oxmLen ; i++)
         {
 // Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
 #pragma warning(suppress : 4267)
             cJSON *jsonOxm = cJSON_GetArrayItem(jsonObj, i);
+
+#else
+            cJSON *jsonOxm = cJSON_GetArrayItem(jsonObj, i);
+
+#endif
             VERIFY_NOT_NULL(TAG, jsonOxm, ERROR);
             doxm->oxm[i] = (OicSecOxm_t)jsonOxm->valueint;
         }
@@ -591,8 +633,14 @@ OicSecDoxm_t* JSONToDoxmBin(const char * jsonStr)
 
     //OxmSel -- Mandatory
 // Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
 #pragma warning(suppress : 4267)
     jsonObj = cJSON_GetObjectItem(jsonDoxm, OIC_JSON_OXM_SEL_NAME);
+
+#else
+    jsonObj = cJSON_GetObjectItem(jsonDoxm, OIC_JSON_OXM_SEL_NAME);
+
+#endif
     if (jsonObj)
     {
         VERIFY_SUCCESS(TAG, cJSON_Number == jsonObj->type, ERROR);
@@ -1021,8 +1069,14 @@ static OicSecSvc_t* JSONToSvcBin(const char * jsonStr)
             do
             {
 // Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
 #pragma warning(suppress : 4267)
                 cJSON *jsonOwnr = cJSON_GetArrayItem(jsonObj, idxx);
+
+#else
+                cJSON *jsonOwnr = cJSON_GetArrayItem(jsonObj, idxx);
+
+#endif
                 VERIFY_NOT_NULL(TAG, jsonOwnr, ERROR);
                 VERIFY_SUCCESS(TAG, cJSON_String == jsonOwnr->type, ERROR);
                 outLen = 0;
@@ -1083,8 +1137,14 @@ static OicSecAmacl_t* JSONToAmaclBin(const char * jsonStr)
     do
     {
 // Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
 #pragma warning(suppress : 4267)
         cJSON *jsonRsrc = cJSON_GetArrayItem(jsonRlistArray, idxx);
+
+#else
+        cJSON *jsonRsrc = cJSON_GetArrayItem(jsonRlistArray, idxx);
+
+#endif
         VERIFY_NOT_NULL(TAG, jsonRsrc, ERROR);
 
         cJSON *jsonRsrcObj = cJSON_GetObjectItem(jsonRsrc, OIC_JSON_HREF_NAME);
@@ -1110,8 +1170,14 @@ static OicSecAmacl_t* JSONToAmaclBin(const char * jsonStr)
     do
     {
 // Needs to be removed once IOT-1746 is resolved.
+#ifdef _MSC_VER
 #pragma warning(suppress : 4267)
         cJSON *jsonAms = cJSON_GetArrayItem(jsonObj, idxx);
+
+#else
+        cJSON *jsonAms = cJSON_GetArrayItem(jsonObj, idxx);
+
+#endif
         VERIFY_NOT_NULL(TAG, jsonAms, ERROR);
         VERIFY_SUCCESS(TAG, cJSON_String == jsonAms->type, ERROR);
 
index e9a9b24..0b5c1a7 100644 (file)
@@ -113,6 +113,7 @@ if target_os in ['android', 'linux', 'tizen', 'msys_nt', 'windows']:
 if target_os not in ['windows', 'msys_nt']:
     liboctbstack_env.AppendUnique(LIBS = ['m'])
 else:
+    liboctbstack_env.AppendUnique(CCFLAGS=['/W3', '/WX'])
     # octbstack.def specifies the list of functions exported by octbstack.dll.
     liboctbstack_env.Replace(WINDOWS_INSERT_DEF = ['1'])
 
index 4e1c344..9a858a4 100644 (file)
@@ -232,7 +232,7 @@ typedef struct OCResource {
     union
     {
         /** An ordinal number that is not repeated - must be unique in the collection context. */
-        uint8_t ins;
+        int64_t ins;
         /** Any unique string including a URI. */
         char *uniqueStr;
         /** Use UUID for universal uniqueness - used in /oic/res to identify the device. */
index ea98405..858dbc7 100644 (file)
@@ -310,7 +310,7 @@ OCStackResult ExtractFiltersFromQuery(const char *query, char **filterOne, char
 #if defined(RD_CLIENT) || defined(RD_SERVER)
 /**
  * This function binds an resource unique ins value to the resource. This can be only called
- * when stack is received response from resource-directory.
+ * when the stack has received a response from resource-directory.
  *
  * @param requestUri URI of the resource.
  * @param response Response from queries to remote servers.
index 7c24f72..75f514f 100644 (file)
@@ -691,7 +691,7 @@ OCStackResult OCSetProxyURI(const char *uri);
  *
  * @return ::OC_STACK_OK on success, some other value upon failure.
  */
-OCStackResult OCBindResourceInsToResource(OCResourceHandle handle, uint8_t ins);
+OCStackResult OCBindResourceInsToResource(OCResourceHandle handle, int64_t ins);
 
 /**
  * This function gets the resource unique id for a resource.
@@ -701,7 +701,7 @@ OCStackResult OCBindResourceInsToResource(OCResourceHandle handle, uint8_t ins);
  *
  * @return Ins if resource found or 0 resource not found.
  */
-OCStackResult OCGetResourceIns(OCResourceHandle handle, uint8_t *ins);
+OCStackResult OCGetResourceIns(OCResourceHandle handle, int64_t *ins);
 
 #ifdef RD_SERVER
 /**
index 13bc01c..049fbc6 100644 (file)
 #define MAX_IP_ADDR_ST_SZ  16 //string size of "155.255.255.255" (15 + 1)
 #define MAX_PORT_ST_SZ  6     //string size of "65535" (5 + 1)
 
+// Including the NULL terminator, length of UUID string of the form:
+// "a62389f7-afde-00b6-cd3e-12b97d2fcf09"
+#define UUID_STRING_LENGTH sizeof("a62389f7-afde-00b6-cd3e-12b97d2fcf09")
+
 static int UnicastDiscovery = 0;
 static int TestCase = 0;
 static int Connectivity = 0;
@@ -407,15 +411,11 @@ void collectUniqueResource(const OCClientResponse * clientResponse)
     OCDiscoveryPayload* pay = (OCDiscoveryPayload*) clientResponse->payload;
     OCResourcePayload* res = pay->resources;
 
-    // Including the NUL terminator, length of UUID string of the form:
-    //   "a62389f7-afde-00b6-cd3e-12b97d2fcf09"
-#   define UUID_LENGTH 37
-
-    char sidStr[UUID_LENGTH];
+    char sidStr[UUID_STRING_LENGTH];
 
     while(res) {
 
-        int ret = snprintf(sidStr, UUID_LENGTH,
+        int ret = snprintf(sidStr, UUID_STRING_LENGTH,
                 "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
                 pay->sid[0], pay->sid[1], pay->sid[2], pay->sid[3],
                 pay->sid[4], pay->sid[5], pay->sid[6], pay->sid[7],
@@ -423,7 +423,7 @@ void collectUniqueResource(const OCClientResponse * clientResponse)
                 pay->sid[12], pay->sid[13], pay->sid[14], pay->sid[15]
                 );
 
-        if (ret == UUID_LENGTH - 1)
+        if (ret == (UUID_STRING_LENGTH - 1))
         {
             if(insertResource(sidStr, res->uri, clientResponse) == 1)
             {
index b68bfc6..656168e 100644 (file)
@@ -186,10 +186,17 @@ bool checkIfQueryForPowerPassed(char * query)
 
         if (pointerToOperator)
         {
-            int powerRequested = atoi(pointerToOperator + 1);
+            int64_t powerRequested;
+            int matchedItems = sscanf((pointerToOperator + 1), "%lld", &powerRequested);
+
+            if (1 != matchedItems)
+            {
+                return true;
+            }
+
             if (Light.power > powerRequested)
             {
-                OIC_LOG_V(INFO, TAG, "Current power: %d. Requested: <%d", Light.power,
+                OIC_LOG_V(INFO, TAG, "Current power: %lld. Requested: <%lld", Light.power,
                           powerRequested);
                 return false;
             }
@@ -730,7 +737,7 @@ void *ChangeLightRepresentation (void *param)
         Light.power += 5;
         if (gLightUnderObservation)
         {
-            OIC_LOG_V(INFO, TAG, " =====> Notifying stack of new power level %d\n", Light.power);
+            OIC_LOG_V(INFO, TAG, " =====> Notifying stack of new power level %lld\n", Light.power);
             if (gObserveNotifyType == 1)
             {
                 // Notify list of observers. Alternate observers on the list will be notified.
index f07ee8f..bba38f1 100644 (file)
@@ -40,7 +40,7 @@ typedef struct LIGHTRESOURCE
 {
     OCResourceHandle handle;
     bool state;
-    int power;
+    int64_t power;
 } LightResource;
 
 /* Structure to represent the observers */
index e5726c4..2af8e5e 100644 (file)
@@ -345,7 +345,7 @@ int main(int /*argc*/, char* /*argv*/[])
     return 0;
 }
 
-int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int resourcePower)
+int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int64_t resourcePower)
 {
     if (!uri)
     {
index bd223cf..145070d 100644 (file)
@@ -36,7 +36,7 @@
 typedef struct LEDRESOURCE{
     OCResourceHandle handle;
     bool state;
-    int power;
+    int64_t power;
 } LEDResource;
 
 //-----------------------------------------------------------------------------
@@ -46,7 +46,7 @@ typedef struct LEDRESOURCE{
 /* Function that creates a new LED resource by calling the
  * OCCreateResource() method.
  */
-int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int resourcePower);
+int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int64_t resourcePower);
 
 /* This method constructs a response from the request */
 OCRepPayload* constructResponse (OCEntityHandlerRequest *ehRequest);
index 1abf2f9..913234e 100644 (file)
@@ -19,6 +19,7 @@
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
 #include "iotivity_config.h"
+#include <assert.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
@@ -201,19 +202,14 @@ OCEntityHandlerRequest *CopyRequest(OCEntityHandlerRequest *entityHandlerRequest
 void AlarmHandler(int sig);
 int WINAPI AlarmThread(void *seconds)
 {
-// Explicit casts didn't remove this warning and we're guaranteed to be within
-// bounds expected by sleep().
-#pragma warning( suppress : 4311 )
-    sleep((unsigned int)seconds);
+    sleep(PtrToUlong(seconds));
     AlarmHandler(0);
     return 0;
 }
 
 void alarm(unsigned int seconds)
 {
-// Explicit casts didn't remove this warning.
-#pragma warning( suppress : 4312 )
-    CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)AlarmThread, (void*)seconds, 0, NULL);
+    CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)AlarmThread, ULongToPtr(seconds), 0, NULL);
 }
 #endif
 
@@ -372,7 +368,7 @@ int main(int /*argc*/, char** /*argv[]*/)
     return 0;
 }
 
-int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int resourcePower)
+int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int64_t resourcePower)
 {
     if (!uri)
     {
index 0c94421..2ae3e4a 100644 (file)
@@ -37,7 +37,7 @@ typedef struct LEDRESOURCE
 {
     OCResourceHandle handle;
     bool state;
-    int power;
+    int64_t power;
 } LEDResource;
 
 //-----------------------------------------------------------------------------
@@ -47,7 +47,7 @@ typedef struct LEDRESOURCE
 /* Function that creates a new LED resource by calling the
  * OCCreateResource() method.
  */
-int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int resourcePower);
+int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int64_t resourcePower);
 
 /* This method converts the payload to JSON format */
 char* constructJsonResponse (OCEntityHandlerRequest *ehRequest);
index 745c280..6c2c360 100644 (file)
@@ -102,7 +102,7 @@ OCRepPayload* constructResponse (OCEntityHandlerRequest *ehRequest)
         int64_t pow;
         if(OCRepPayloadGetPropInt(input, "power", &pow))
         {
-            currLEDResource->power =pow;
+            currLEDResource->power = pow;
         }
 
         bool state;
@@ -178,8 +178,8 @@ OCEntityHandlerResult ProcessPostRequest (OCEntityHandlerRequest *ehRequest,
         {
             // Create new LED instance
             char newLedUri[15] = "/a/led/";
-            int newLedUriLength = strlen(newLedUri);
-            snprintf (newLedUri + newLedUriLength, sizeof(newLedUri)-newLedUriLength, "%d", gCurrLedInstance);
+            size_t newLedUriLength = strlen(newLedUri);
+            snprintf((newLedUri + newLedUriLength), (sizeof(newLedUri) - newLedUriLength), "%d", gCurrLedInstance);
 
             respPLPost_led = OCRepPayloadCreate();
             OCRepPayloadSetUri(respPLPost_led, gResourceUri);
@@ -373,7 +373,7 @@ int main(int /*argc*/, char* /*argv*/[])
     return 0;
 }
 
-int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int resourcePower)
+int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int64_t resourcePower)
 {
     if (!uri)
     {
index f8b72db..52a595c 100644 (file)
@@ -36,7 +36,7 @@
 typedef struct LEDRESOURCE{
     OCResourceHandle handle;
     bool state;
-    int power;
+    int64_t power;
 } LEDResource;
 
 //-----------------------------------------------------------------------------
@@ -46,7 +46,7 @@ typedef struct LEDRESOURCE{
 /* Function that creates a new LED resource by calling the
  * OCCreateResource() method.
  */
-int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int resourcePower);
+int createLEDResource (char *uri, LEDResource *ledResource, bool resourceState, int64_t resourcePower);
 
 /* This method converts the payload to JSON format */
 OCRepPayload* constructResponse (OCEntityHandlerRequest *ehRequest);
index b8d663e..8a70166 100644 (file)
@@ -578,7 +578,15 @@ bool OCRepPayloadGetPropDouble(const OCRepPayload* payload, const char* name, do
         }
         else if (val->type == OCREP_PROP_INT)
         {
+// Should be removed once IOT-1705 is fixed.
+#ifdef _MSC_VER
+#pragma warning( suppress : 4244 )
             *value = val->i;
+
+#else
+            *value = val->i;
+
+#endif
             return true;
         }
     }
@@ -1113,9 +1121,11 @@ bool OCRepPayloadGetDoubleArray(const OCRepPayload* payload, const char* name,
 {
     OCRepPayloadValue* val = OCRepPayloadFindValue(payload, name);
 
-    if (!val || val->type != OCREP_PROP_ARRAY ||
-        (val->arr.type != OCREP_PROP_DOUBLE && val->arr.type != OCREP_PROP_INT)
-            || !val->arr.dArray)
+    if (!val ||
+        (val->type != OCREP_PROP_ARRAY) ||
+        ((val->arr.type != OCREP_PROP_DOUBLE) &&
+         (val->arr.type != OCREP_PROP_INT)) ||
+        !val->arr.dArray)
     {
         return false;
     }
@@ -1141,7 +1151,15 @@ bool OCRepPayloadGetDoubleArray(const OCRepPayload* payload, const char* name,
         size_t n = 0;
         for ( ; n < dimTotal; ++n)
         {
+// Should be removed once IOT-1705 is fixed.
+#ifdef _MSC_VER
+#pragma warning( suppress : 4244 )
             (*array)[n] = val->arr.iArray[n];
+
+#else
+            (*array)[n] = val->arr.iArray[n];
+
+#endif
         }
     }
     memcpy(dimensions, val->arr.dimensions, MAX_REP_ARRAY_DEPTH * sizeof(size_t));
index ea2f045..6840fa9 100755 (executable)
@@ -54,6 +54,7 @@
 #include "payload_logging.h"
 #include "ocendpoint.h"
 #include "ocstackinternal.h"
+#include "oickeepalive.h"
 
 #ifdef ROUTING_GATEWAY
 #include "routingmanager.h"
index dd7773f..7ce6a7c 100644 (file)
@@ -37,6 +37,7 @@
 #define __STDC_LIMIT_MACROS
 #endif
 #include "iotivity_config.h"
+#include <stdlib.h>
 #include <inttypes.h>
 #include <string.h>
 #include <ctype.h>
@@ -5269,7 +5270,7 @@ OCStackResult OCSetProxyURI(const char *uri)
 }
 
 #if defined(RD_CLIENT) || defined(RD_SERVER)
-OCStackResult OCBindResourceInsToResource(OCResourceHandle handle, uint8_t ins)
+OCStackResult OCBindResourceInsToResource(OCResourceHandle handle, int64_t ins)
 {
     VERIFY_NON_NULL(handle, ERROR, OC_STACK_INVALID_PARAM);
 
@@ -5372,13 +5373,22 @@ OCStackResult OCUpdateResourceInsWithResponse(const char *requestUri,
                  query = strstr(query, OC_RSRVD_INS);
                  if (query)
                  {
-                     uint8_t queryIns = atoi(query + 4);
+                     // Arduino's AVR-GCC doesn't support strtoll().
+                     int64_t queryIns;
+                     int matchedItems = sscanf(query + 4, "%lld", &queryIns);
+
+                     if (0 == matchedItems)
+                     {
+                         OICFree(targetUri);
+                         return OC_STACK_INVALID_QUERY;
+                     }
+
                      for (uint8_t i = 0; i < numResources; i++)
                      {
                          OCResourceHandle resHandle = OCGetResourceHandle(i);
                          if (resHandle)
                          {
-                             uint8_t resIns = 0;
+                             int64_t resIns = 0;
                              OCGetResourceIns(resHandle, &resIns);
                              if (queryIns && queryIns == resIns)
                              {
@@ -5397,7 +5407,7 @@ OCStackResult OCUpdateResourceInsWithResponse(const char *requestUri,
     return OC_STACK_OK;
 }
 
-OCStackResult OCGetResourceIns(OCResourceHandle handle, uint8_t *ins)
+OCStackResult OCGetResourceIns(OCResourceHandle handle, int64_t* ins)
 {
     OCResource *resource = NULL;
 
@@ -5467,8 +5477,8 @@ OCStackResult OCSetHeaderOption(OCHeaderOption* ocHdrOpt, size_t* numOptions, ui
     ocHdrOpt->protocolID = OC_COAP_ID;
     ocHdrOpt->optionID = optionID;
     ocHdrOpt->optionLength =
-            optionDataLength < MAX_HEADER_OPTION_DATA_LENGTH ?
-                    optionDataLength : MAX_HEADER_OPTION_DATA_LENGTH;
+            (optionDataLength < MAX_HEADER_OPTION_DATA_LENGTH) ?
+                    (uint16_t)optionDataLength : MAX_HEADER_OPTION_DATA_LENGTH;
     memcpy(ocHdrOpt->optionData, (const void*) optionData, ocHdrOpt->optionLength);
     *numOptions += 1;
 
index 20e7289..b4ead45 100644 (file)
@@ -149,11 +149,11 @@ static OCStackResult ResourcePayloadCreate(sqlite3_stmt *stmt, OCDiscoveryPayloa
             goto exit;
         }
 
-        int id = sqlite3_column_int(stmt, ins_index);
+        sqlite3_int64 id = sqlite3_column_int64(stmt, ins_index);
         const unsigned char *uri = sqlite3_column_text(stmt, uri_index);
-        int bitmap = sqlite3_column_int(stmt, p_index);
-        int deviceId = sqlite3_column_int(stmt, d_index);
-        OIC_LOG_V(DEBUG, TAG, " %s %d", uri, deviceId);
+        sqlite3_int64 bitmap = sqlite3_column_int64(stmt, p_index);
+        sqlite3_int64 deviceId = sqlite3_column_int64(stmt, d_index);
+        OIC_LOG_V(DEBUG, TAG, " %s %" PRId64, uri, deviceId);
         resourcePayload->uri = OICStrdup((char *)uri);
         if (!resourcePayload->uri)
         {
@@ -162,9 +162,11 @@ static OCStackResult ResourcePayloadCreate(sqlite3_stmt *stmt, OCDiscoveryPayloa
         }
 
         sqlite3_stmt *stmtRT = 0;
-        const char *rt = "SELECT rt FROM RD_LINK_RT WHERE LINK_ID=@id";
-        VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, rt, strlen(rt) + 1, &stmtRT, NULL));
-        VERIFY_SQLITE(sqlite3_bind_int(stmtRT, sqlite3_bind_parameter_index(stmtRT, "@id"), id));
+        const char rt[] = "SELECT rt FROM RD_LINK_RT WHERE LINK_ID=@id";
+        int rtSize = (int)sizeof(rt);
+
+        VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, rt, rtSize, &stmtRT, NULL));
+        VERIFY_SQLITE(sqlite3_bind_int64(stmtRT, sqlite3_bind_parameter_index(stmtRT, "@id"), id));
         while (SQLITE_ROW == sqlite3_step(stmtRT))
         {
             const unsigned char *rt1 = sqlite3_column_text(stmtRT, rt_value_index);
@@ -177,9 +179,11 @@ static OCStackResult ResourcePayloadCreate(sqlite3_stmt *stmt, OCDiscoveryPayloa
         VERIFY_SQLITE(sqlite3_finalize(stmtRT));
 
         sqlite3_stmt *stmtIF = 0;
-        const char *itf = "SELECT if FROM RD_LINK_IF WHERE LINK_ID=@id";
-        VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, itf, strlen(itf) + 1, &stmtIF, NULL));
-        VERIFY_SQLITE(sqlite3_bind_int(stmtIF, sqlite3_bind_parameter_index(stmtIF, "@id"), id));
+        const char itf[] = "SELECT if FROM RD_LINK_IF WHERE LINK_ID=@id";
+        int itfSize = (int)sizeof(itf);
+
+        VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, itf, itfSize, &stmtIF, NULL));
+        VERIFY_SQLITE(sqlite3_bind_int64(stmtIF, sqlite3_bind_parameter_index(stmtIF, "@id"), id));
         while (SQLITE_ROW == sqlite3_step(stmtIF))
         {
             const unsigned char *itf = sqlite3_column_text(stmtIF, if_value_index);
@@ -191,18 +195,20 @@ static OCStackResult ResourcePayloadCreate(sqlite3_stmt *stmt, OCDiscoveryPayloa
         }
         VERIFY_SQLITE(sqlite3_finalize(stmtIF));
 
-        resourcePayload->bitmap = bitmap & (OC_OBSERVABLE | OC_DISCOVERABLE);
-        resourcePayload->secure = (bitmap & OC_SECURE) != 0;
+        resourcePayload->bitmap = (uint8_t)(bitmap & (OC_OBSERVABLE | OC_DISCOVERABLE));
+        resourcePayload->secure = ((bitmap & OC_SECURE) != 0);
 
-        const char *address = "SELECT di, address FROM RD_DEVICE_LIST "
+        const char address[] = "SELECT di, address FROM RD_DEVICE_LIST "
             "INNER JOIN RD_DEVICE_LINK_LIST ON RD_DEVICE_LINK_LIST.DEVICE_ID = RD_DEVICE_LIST.ID "
             "WHERE RD_DEVICE_LINK_LIST.DEVICE_ID=@deviceId";
+        int addressSize = (int)sizeof(address);
+
         const uint8_t di_index = 0;
         const uint8_t address_index = 1;
 
         sqlite3_stmt *stmt1 = 0;
-        VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, address, strlen(address) + 1, &stmt1, NULL));
-        VERIFY_SQLITE(sqlite3_bind_int(stmt1, sqlite3_bind_parameter_index(stmt1, "@deviceId"), deviceId));
+        VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, address, addressSize, &stmt1, NULL));
+        VERIFY_SQLITE(sqlite3_bind_int64(stmt1, sqlite3_bind_parameter_index(stmt1, "@deviceId"), deviceId));
 
         res = sqlite3_step(stmt1);
         if (SQLITE_ROW == res || SQLITE_DONE == res)
@@ -251,38 +257,53 @@ static OCStackResult CheckResources(const char *interfaceType, const char *resou
         return OC_STACK_INTERNAL_SERVER_ERROR;
     }
 
+    size_t sidLength = strlen(discPayload->sid);
+    size_t resourceTypeLength = strlen(resourceType);
+    size_t interfaceTypeLength = strlen(interfaceType);
+
+    if ((sidLength > INT_MAX) ||
+        (resourceTypeLength > INT_MAX) ||
+        (interfaceTypeLength > INT_MAX))
+    {
+        return OC_STACK_INVALID_QUERY;
+    }
+
     OCStackResult result = OC_STACK_OK;
     sqlite3_stmt *stmt = 0;
     if (resourceType)
     {
         if (!interfaceType || 0 == strcmp(interfaceType, OC_RSRVD_INTERFACE_LL))
         {
-            const char *input = "SELECT * FROM RD_DEVICE_LINK_LIST "
+            const char input[] = "SELECT * FROM RD_DEVICE_LINK_LIST "
                                 "INNER JOIN RD_DEVICE_LIST ON RD_DEVICE_LINK_LIST.DEVICE_ID=RD_DEVICE_LIST.ID "
                                 "INNER JOIN RD_LINK_RT ON RD_DEVICE_LINK_LIST.INS=RD_LINK_RT.LINK_ID "
                                 "WHERE RD_DEVICE_LIST.di LIKE @di AND RD_LINK_RT.rt LIKE @resourceType";
-            VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, strlen(input) + 1, &stmt, NULL));
+            int inputSize = (int)sizeof(input);
+
+            VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, inputSize, &stmt, NULL));
             VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@di"),
-                                            discPayload->sid, strlen(discPayload->sid), SQLITE_STATIC));
+                                            discPayload->sid, (int)sidLength, SQLITE_STATIC));
             VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@resourceType"),
-                                            resourceType, strlen(resourceType), SQLITE_STATIC));
+                                            resourceType, (int)resourceTypeLength, SQLITE_STATIC));
         }
         else
         {
-            const char *input = "SELECT * FROM RD_DEVICE_LINK_LIST "
+            const char input[] = "SELECT * FROM RD_DEVICE_LINK_LIST "
                                 "INNER JOIN RD_DEVICE_LIST ON RD_DEVICE_LINK_LIST.DEVICE_ID=RD_DEVICE_LIST.ID "
                                 "INNER JOIN RD_LINK_RT ON RD_DEVICE_LINK_LIST.INS=RD_LINK_RT.LINK_ID "
                                 "INNER JOIN RD_LINK_IF ON RD_DEVICE_LINK_LIST.INS=RD_LINK_IF.LINK_ID "
                                 "WHERE RD_DEVICE_LIST.di LIKE @di "
                                 "AND RD_LINK_RT.rt LIKE @resourceType "
                                 "AND RD_LINK_IF.if LIKE @interfaceType";
-            VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, strlen(input) + 1, &stmt, NULL));
+            int inputSize = (int)sizeof(input);
+
+            VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, inputSize, &stmt, NULL));
             VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@di"),
-                                            discPayload->sid, strlen(discPayload->sid), SQLITE_STATIC));
+                                            discPayload->sid, (int)sidLength, SQLITE_STATIC));
             VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@resourceType"),
-                                            resourceType, strlen(resourceType), SQLITE_STATIC));
+                                            resourceType, (int)resourceTypeLength, SQLITE_STATIC));
             VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@interfaceType"),
-                                            interfaceType, strlen(interfaceType), SQLITE_STATIC));
+                                            interfaceType, (int)interfaceTypeLength, SQLITE_STATIC));
         }
         result = ResourcePayloadCreate(stmt, discPayload);
     }
@@ -290,24 +311,28 @@ static OCStackResult CheckResources(const char *interfaceType, const char *resou
     {
         if (0 == strcmp(interfaceType, OC_RSRVD_INTERFACE_LL))
         {
-            const char *input = "SELECT * FROM RD_DEVICE_LINK_LIST "
+            const char input[] = "SELECT * FROM RD_DEVICE_LINK_LIST "
                                 "INNER JOIN RD_DEVICE_LIST ON RD_DEVICE_LINK_LIST.DEVICE_ID=RD_DEVICE_LIST.ID "
                                 "WHERE RD_DEVICE_LIST.di LIKE @di";
-            VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, strlen(input) + 1, &stmt, NULL));
+            int inputSize = (int)sizeof(input);
+
+            VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, inputSize, &stmt, NULL));
             VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@di"),
-                                            discPayload->sid, strlen(discPayload->sid), SQLITE_STATIC));
+                                            discPayload->sid, (int)sidLength, SQLITE_STATIC));
         }
         else
         {
-            const char *input = "SELECT * FROM RD_DEVICE_LINK_LIST "
+            const char input[] = "SELECT * FROM RD_DEVICE_LINK_LIST "
                                 "INNER JOIN RD_DEVICE_LIST ON RD_DEVICE_LINK_LIST.DEVICE_ID=RD_DEVICE_LIST.ID "
                                 "INNER JOIN RD_LINK_IF ON RD_DEVICE_LINK_LIST.INS=RD_LINK_IF.LINK_ID "
                                 "WHERE RD_DEVICE_LIST.di LIKE @di AND RD_LINK_IF.if LIKE @interfaceType";
-            VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, strlen(input) + 1, &stmt, NULL));
+            int inputSize = (int)sizeof(input);
+
+            VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, inputSize, &stmt, NULL));
             VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@di"),
-                                            discPayload->sid, strlen(discPayload->sid), SQLITE_STATIC));
+                                            discPayload->sid, (int)sidLength, SQLITE_STATIC));
             VERIFY_SQLITE(sqlite3_bind_text(stmt, sqlite3_bind_parameter_index(stmt, "@interfaceType"),
-                                            interfaceType, strlen(interfaceType), SQLITE_STATIC));
+                                            interfaceType, (int)interfaceTypeLength, SQLITE_STATIC));
         }
         result = ResourcePayloadCreate(stmt, discPayload);
     }
@@ -342,9 +367,10 @@ OCStackResult OCRDDatabaseDiscoveryPayloadCreate(const char *interfaceType,
 
     const char *serverID = OCGetServerInstanceIDString();
     sqlite3_stmt *stmt = 0;
-    const char *input = "SELECT di FROM RD_DEVICE_LIST";
+    const char input[] = "SELECT di FROM RD_DEVICE_LIST";
+    int inputSize = (int)sizeof(input);
     const uint8_t di_index = 0;
-    VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, strlen(input) + 1, &stmt, NULL));
+    VERIFY_SQLITE(sqlite3_prepare_v2(gRDDB, input, inputSize, &stmt, NULL));
     while (SQLITE_ROW == sqlite3_step(stmt))
     {
         const unsigned char *di = sqlite3_column_text(stmt, di_index);
index 8ccaaba..0339115 100644 (file)
@@ -33,18 +33,18 @@ rd_mode = stacktest_env.get('RD_MODE')
 # Build flags
 ######################################################################
 stacktest_env.PrependUnique(CPPPATH = [
-               '../../security/include',
-               '../../ocsocket/include',
-               '../../logger/include',
-               '../../../c_common/ocrandom/include',
-               '../../include',
-               '../../stack/include',
-               '../../stack/include/internal',
-               '../../connectivity/api',
-               '../../connectivity/inc/pkix',
-               '../../connectivity/external/inc',
-               '../../../oc_logger/include',
-               ])
+        '../../security/include',
+        '../../ocsocket/include',
+        '../../logger/include',
+        '../../../c_common/ocrandom/include',
+        '../../include',
+        '../../stack/include',
+        '../../stack/include/internal',
+        '../../connectivity/api',
+        '../../connectivity/inc/pkix',
+        '../../connectivity/external/inc',
+        '../../../oc_logger/include',
+        ])
 
 stacktest_env.AppendUnique(LIBPATH = [stacktest_env.get('BUILD_DIR')])
 stacktest_env.PrependUnique(LIBS = ['octbstack_test',
@@ -55,18 +55,19 @@ if target_os != 'darwin':
     stacktest_env.PrependUnique(LIBS = ['oc_logger'])
 
 if stacktest_env.get('SECURED') == '1':
-       stacktest_env.AppendUnique(LIBS = ['mbedtls', 'mbedx509','mbedcrypto', 'tinydtls'])
+    stacktest_env.AppendUnique(LIBS = ['mbedtls', 'mbedx509','mbedcrypto', 'tinydtls'])
 
 if stacktest_env.get('LOGGING'):
-       stacktest_env.AppendUnique(CPPDEFINES = ['TB_LOG'])
+    stacktest_env.AppendUnique(CPPDEFINES = ['TB_LOG'])
 
-if target_os not in ['msys_nt', 'windows']:
-       stacktest_env.PrependUnique(LIBS = ['m'])
+if target_os in ['msys_nt', 'windows']:
+    stacktest_env.PrependUnique(LIBS = ['sqlite3'])
+    stacktest_env.AppendUnique(CCFLAGS=['/W3', '/WX'])
 else:
-       stacktest_env.PrependUnique(LIBS = ['sqlite3'])
+    stacktest_env.PrependUnique(LIBS = ['m'])
 
 if 'CLIENT' in rd_mode or 'SERVER' in rd_mode:
-       stacktest_env.PrependUnique(LIBS = ['resource_directory'])
+    stacktest_env.PrependUnique(LIBS = ['resource_directory'])
 
 stacktest_env.AppendUnique(LIBS = ['timer'])
 ######################################################################
@@ -79,7 +80,7 @@ Alias("test", [stacktests, cbortests])
 
 stacktest_env.AppendTarget('test')
 if stacktest_env.get('TEST') == '1':
-       if target_os in ['linux', 'windows']:
+    if target_os in ['linux', 'windows']:
                 run_test(stacktest_env,
                          'resource_csdk_stack_test.memcheck',
                          'resource/csdk/stack/test/stacktests')
index 524a1e5..1a22e68 100644 (file)
@@ -613,7 +613,7 @@ TEST(StackStart, GetDeviceInfoAPI)
 
     EXPECT_EQ(OC_STACK_OK, OCGetPropertyValue(PAYLOAD_TYPE_DEVICE, OC_RSRVD_DATA_MODEL_VERSION, &value));
     ASSERT_TRUE(value != NULL);
-    ASSERT_TRUE(((OCStringLL *)value)->value);
+    ASSERT_TRUE(((OCStringLL *)value)->value != NULL);
     EXPECT_STREQ("Data Model Version", ((OCStringLL *)value)->value);
     OCFreeOCStringLL((OCStringLL *) value);
     value = NULL;