From: HyunJun Kim Date: Tue, 3 Feb 2015 02:10:55 +0000 (+0900) Subject: Fix infinite loop in GroupAction. X-Git-Tag: 1.2.0+RC1~1952 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6a8ad4c43926df7541b414452ed57dbc9761137a;p=platform%2Fupstream%2Fiotivity.git Fix infinite loop in GroupAction. Fix infinite loop in FindAndDeleteActionSet function. So we change the code. Fix [IOT-282] Change-Id: I23d3663ea32c5e56a456b013d4c697fcf0f886d2 Signed-off-by: HyunJun Kim Reviewed-on: https://gerrit.iotivity.org/gerrit/286 Reviewed-by: Uze Choi Tested-by: Uze Choi --- diff --git a/resource/csdk/stack/src/oicgroup.c b/resource/csdk/stack/src/oicgroup.c index b9f70ac..72bd679 100644 --- a/resource/csdk/stack/src/oicgroup.c +++ b/resource/csdk/stack/src/oicgroup.c @@ -26,6 +26,7 @@ #include "oicgroup.h" #include "ocresource.h" #include "occollection.h" +#include "logger.h" #define TAG PCF("OICGROUP") @@ -217,10 +218,8 @@ void DeleteActionSet(OCActionSet** actionset) OCStackResult FindAndDeleteActionSet(OCResource **resource, const char * actionsetName) { - if (*resource != NULL) { - OCActionSet *pointer = NULL; OCActionSet *pDel = NULL; @@ -238,9 +237,7 @@ OCStackResult FindAndDeleteActionSet(OCResource **resource, const char * actions (*resource)->actionsetHead = pointer->next; else (*resource)->actionsetHead = NULL; - DeleteActionSet(&pointer); - } else if (pointer->next != NULL) { @@ -256,6 +253,7 @@ OCStackResult FindAndDeleteActionSet(OCResource **resource, const char * actions DeleteActionSet(&pDel); } } + pointer = pointer->next; } } @@ -263,7 +261,6 @@ OCStackResult FindAndDeleteActionSet(OCResource **resource, const char * actions } } - return OC_STACK_ERROR; } @@ -340,9 +337,13 @@ OCStackResult GetActionSetFromString(OCResource **resource, unsigned char *reque //GetActionName(iterToken, &actionsetName); // printf("%s\n", iterToken, &iterTokenPtr); - iterToken = (char *) strtok_r(NULL, DESC_DELIMITER, &iterTokenPtr); // it is mean ':'. + // it is mean ':'. + iterToken = (char *) strtok_r(NULL, DESC_DELIMITER, &iterTokenPtr); + // printf("%s\n", iterToken); - iterToken = (char *) strtok_r(NULL, DESC_DELIMITER, &iterTokenPtr); // it is body of action description. + // it is body of action description. + iterToken = (char *) strtok_r(NULL, DESC_DELIMITER, &iterTokenPtr); + // printf("%s\n", iterToken); // printf("DESC :: %s\n", iterToken); @@ -412,7 +413,6 @@ OCStackResult GetActionSetFromString(OCResource **resource, unsigned char *reque if (strcmp(iterToken, "uri") == 0) { iterToken = (char *) strtok_r(NULL, "=", &iterAttrPtr); - //printf("uri :: %s\n", iterToken); action->resourceUri = (char *) OCMalloc(strlen(iterToken) + 1); strncpy(action->resourceUri, iterToken, strlen(iterToken) + 1); } @@ -452,9 +452,11 @@ OCStackResult GetActionSetFromString(OCResource **resource, unsigned char *reque *method = (char *) OCMalloc(strlen(iterToken) + 1); strncpy(*method, iterToken, strlen(iterToken) + 1); - iterToken = (char *) strtok_r(NULL, DESC_DELIMITER, &iterTokenPtr); // it is mean ':'. + // it is mean ':'. + iterToken = (char *) strtok_r(NULL, DESC_DELIMITER, &iterTokenPtr); // printf("%s\n", iterToken); - iterToken = (char *) strtok_r(NULL, DESC_DELIMITER, &iterTokenPtr); // it is body of action description. + // it is body of action description. + iterToken = (char *) strtok_r(NULL, DESC_DELIMITER, &iterTokenPtr); // printf("%s\n", iterToken); description = (char *) OCMalloc(strlen(iterToken) + 1);