From: Pawel Winogrodzki Date: Wed, 1 Feb 2017 20:49:01 +0000 (-0800) Subject: IOT-1583: Removing /W3 warnings inside resource/csdk/stack/ X-Git-Tag: 1.3.0~616 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5a655e00f742a19ef55df57ad18d32e85416403f;p=platform%2Fupstream%2Fiotivity.git IOT-1583: Removing /W3 warnings inside resource/csdk/stack/ 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 Reviewed-on: https://gerrit.iotivity.org/gerrit/17057 Tested-by: jenkins-iotivity Reviewed-by: Dan Mihai --- diff --git a/resource/csdk/logger/include/logger.h b/resource/csdk/logger/include/logger.h index 548b37d..35a4e04 100644 --- a/resource/csdk/logger/include/logger.h +++ b/resource/csdk/logger/include/logger.h @@ -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. diff --git a/resource/csdk/logger/src/logger.c b/resource/csdk/logger/src/logger.c index f34f434..afdcf49 100644 --- a/resource/csdk/logger/src/logger.c +++ b/resource/csdk/logger/src/logger.c @@ -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); diff --git a/resource/csdk/resource-directory/src/internal/rd_database.c b/resource/csdk/resource-directory/src/internal/rd_database.c index f9d8f91..3e3ed87 100644 --- a/resource/csdk/resource-directory/src/internal/rd_database.c +++ b/resource/csdk/resource-directory/src/internal/rd_database.c @@ -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)); diff --git a/resource/csdk/resource-directory/src/rd_client.c b/resource/csdk/resource-directory/src/rd_client.c index 66284ba..26b3fe9 100644 --- a/resource/csdk/resource-directory/src/rd_client.c +++ b/resource/csdk/resource-directory/src/rd_client.c @@ -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; diff --git a/resource/csdk/security/src/credresource.c b/resource/csdk/security/src/credresource.c index f7441a0..10099ae 100644 --- a/resource/csdk/security/src/credresource.c +++ b/resource/csdk/security/src/credresource.c @@ -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; diff --git a/resource/csdk/security/tool/json2cbor.c b/resource/csdk/security/tool/json2cbor.c index 8431412..83ef28c 100644 --- a/resource/csdk/security/tool/json2cbor.c +++ b/resource/csdk/security/tool/json2cbor.c @@ -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); diff --git a/resource/csdk/stack/SConscript b/resource/csdk/stack/SConscript index e9a9b24..0b5c1a7 100644 --- a/resource/csdk/stack/SConscript +++ b/resource/csdk/stack/SConscript @@ -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']) diff --git a/resource/csdk/stack/include/internal/ocresource.h b/resource/csdk/stack/include/internal/ocresource.h index 4e1c344..9a858a4 100644 --- a/resource/csdk/stack/include/internal/ocresource.h +++ b/resource/csdk/stack/include/internal/ocresource.h @@ -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. */ diff --git a/resource/csdk/stack/include/internal/ocstackinternal.h b/resource/csdk/stack/include/internal/ocstackinternal.h index ea98405..858dbc7 100644 --- a/resource/csdk/stack/include/internal/ocstackinternal.h +++ b/resource/csdk/stack/include/internal/ocstackinternal.h @@ -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. diff --git a/resource/csdk/stack/include/ocstack.h b/resource/csdk/stack/include/ocstack.h index 7c24f72..75f514f 100644 --- a/resource/csdk/stack/include/ocstack.h +++ b/resource/csdk/stack/include/ocstack.h @@ -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 /** diff --git a/resource/csdk/stack/samples/linux/SimpleClientServer/occlientbasicops.cpp b/resource/csdk/stack/samples/linux/SimpleClientServer/occlientbasicops.cpp index 13bc01c..049fbc6 100644 --- a/resource/csdk/stack/samples/linux/SimpleClientServer/occlientbasicops.cpp +++ b/resource/csdk/stack/samples/linux/SimpleClientServer/occlientbasicops.cpp @@ -45,6 +45,10 @@ #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) { diff --git a/resource/csdk/stack/samples/linux/SimpleClientServer/ocserver.cpp b/resource/csdk/stack/samples/linux/SimpleClientServer/ocserver.cpp index b68bfc6..656168e 100644 --- a/resource/csdk/stack/samples/linux/SimpleClientServer/ocserver.cpp +++ b/resource/csdk/stack/samples/linux/SimpleClientServer/ocserver.cpp @@ -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. diff --git a/resource/csdk/stack/samples/linux/SimpleClientServer/ocserver.h b/resource/csdk/stack/samples/linux/SimpleClientServer/ocserver.h index f07ee8f..bba38f1 100644 --- a/resource/csdk/stack/samples/linux/SimpleClientServer/ocserver.h +++ b/resource/csdk/stack/samples/linux/SimpleClientServer/ocserver.h @@ -40,7 +40,7 @@ typedef struct LIGHTRESOURCE { OCResourceHandle handle; bool state; - int power; + int64_t power; } LightResource; /* Structure to represent the observers */ diff --git a/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverbasicops.cpp b/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverbasicops.cpp index e5726c4..2af8e5e 100644 --- a/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverbasicops.cpp +++ b/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverbasicops.cpp @@ -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) { diff --git a/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverbasicops.h b/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverbasicops.h index bd223cf..145070d 100644 --- a/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverbasicops.h +++ b/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverbasicops.h @@ -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); diff --git a/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverslow.cpp b/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverslow.cpp index 1abf2f9..913234e 100644 --- a/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverslow.cpp +++ b/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverslow.cpp @@ -19,6 +19,7 @@ //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= #include "iotivity_config.h" +#include #include #include #include @@ -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) { diff --git a/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverslow.h b/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverslow.h index 0c94421..2ae3e4a 100644 --- a/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverslow.h +++ b/resource/csdk/stack/samples/linux/SimpleClientServer/ocserverslow.h @@ -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); diff --git a/resource/csdk/stack/samples/linux/secure/ocserverbasicops.cpp b/resource/csdk/stack/samples/linux/secure/ocserverbasicops.cpp index 745c280..6c2c360 100644 --- a/resource/csdk/stack/samples/linux/secure/ocserverbasicops.cpp +++ b/resource/csdk/stack/samples/linux/secure/ocserverbasicops.cpp @@ -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) { diff --git a/resource/csdk/stack/samples/linux/secure/ocserverbasicops.h b/resource/csdk/stack/samples/linux/secure/ocserverbasicops.h index f8b72db..52a595c 100644 --- a/resource/csdk/stack/samples/linux/secure/ocserverbasicops.h +++ b/resource/csdk/stack/samples/linux/secure/ocserverbasicops.h @@ -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); diff --git a/resource/csdk/stack/src/ocpayload.c b/resource/csdk/stack/src/ocpayload.c index b8d663e..8a70166 100644 --- a/resource/csdk/stack/src/ocpayload.c +++ b/resource/csdk/stack/src/ocpayload.c @@ -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)); diff --git a/resource/csdk/stack/src/ocresource.c b/resource/csdk/stack/src/ocresource.c index ea2f045..6840fa9 100755 --- a/resource/csdk/stack/src/ocresource.c +++ b/resource/csdk/stack/src/ocresource.c @@ -54,6 +54,7 @@ #include "payload_logging.h" #include "ocendpoint.h" #include "ocstackinternal.h" +#include "oickeepalive.h" #ifdef ROUTING_GATEWAY #include "routingmanager.h" diff --git a/resource/csdk/stack/src/ocstack.c b/resource/csdk/stack/src/ocstack.c index dd7773f..7ce6a7c 100644 --- a/resource/csdk/stack/src/ocstack.c +++ b/resource/csdk/stack/src/ocstack.c @@ -37,6 +37,7 @@ #define __STDC_LIMIT_MACROS #endif #include "iotivity_config.h" +#include #include #include #include @@ -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; diff --git a/resource/csdk/stack/src/oicresourcedirectory.c b/resource/csdk/stack/src/oicresourcedirectory.c index 20e7289..b4ead45 100644 --- a/resource/csdk/stack/src/oicresourcedirectory.c +++ b/resource/csdk/stack/src/oicresourcedirectory.c @@ -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); diff --git a/resource/csdk/stack/test/SConscript b/resource/csdk/stack/test/SConscript index 8ccaaba..0339115 100644 --- a/resource/csdk/stack/test/SConscript +++ b/resource/csdk/stack/test/SConscript @@ -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') diff --git a/resource/csdk/stack/test/stacktests.cpp b/resource/csdk/stack/test/stacktests.cpp index 524a1e5..1a22e68 100644 --- a/resource/csdk/stack/test/stacktests.cpp +++ b/resource/csdk/stack/test/stacktests.cpp @@ -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;