From: Sangyoon Jang Date: Mon, 5 Feb 2018 06:21:34 +0000 (+0900) Subject: Fix static analyzer issue X-Git-Tag: accepted/tizen/unified/20180219.142407~3 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fappfw%2Fpkgmgr-info.git;a=commitdiff_plain;h=refs%2Fchanges%2F37%2F169237%2F1 Fix static analyzer issue Add null checking before strcmp(). Change-Id: I2ef5976034958b41f71c60b9c69dd5c26049a695 Signed-off-by: Sangyoon Jang --- diff --git a/parser/src/pkgmgr_parser_deprecated.c b/parser/src/pkgmgr_parser_deprecated.c index bae8fdc..080e909 100644 --- a/parser/src/pkgmgr_parser_deprecated.c +++ b/parser/src/pkgmgr_parser_deprecated.c @@ -1108,31 +1108,31 @@ static void __ps_process_tag(manifest_x * mfx, char *const tagv[]) for (tag = strdup(tagv[0]); tag != NULL; ) { ret_result = strtok_r(tag, delims, &ptr); - - /*check tag : preload */ - if (strcmp(ret_result, "preload") == 0) { - ret_result = strtok_r(NULL, delims, &ptr); - if (strcmp(ret_result, "true") == 0) { - free((void *)mfx->preload); - mfx->preload = strdup("true"); - } else if (strcmp(ret_result, "false") == 0) { - free((void *)mfx->preload); - mfx->preload = strdup("false"); - } - /*check tag : removable*/ - } else if (strcmp(ret_result, "removable") == 0) { - ret_result = strtok_r(NULL, delims, &ptr); - if (strcmp(ret_result, "true") == 0) { - free((void *)mfx->removable); - mfx->removable = strdup("true"); - } else if (strcmp(ret_result, "false") == 0) { - free((void *)mfx->removable); - mfx->removable = strdup("false"); - } - /*check tag : not matched*/ - } else - _LOGD("tag process [%s]is not defined\n", ret_result); - + if (ret_result != NULL) { + /*check tag : preload */ + if (strcmp(ret_result, "preload") == 0) { + ret_result = strtok_r(NULL, delims, &ptr); + if (ret_result && strcmp(ret_result, "true") == 0) { + free((void *)mfx->preload); + mfx->preload = strdup("true"); + } else if (ret_result && strcmp(ret_result, "false") == 0) { + free((void *)mfx->preload); + mfx->preload = strdup("false"); + } + /*check tag : removable*/ + } else if (strcmp(ret_result, "removable") == 0) { + ret_result = strtok_r(NULL, delims, &ptr); + if (ret_result && strcmp(ret_result, "true") == 0) { + free((void *)mfx->removable); + mfx->removable = strdup("true"); + } else if (ret_result && strcmp(ret_result, "false") == 0) { + free((void *)mfx->removable); + mfx->removable = strdup("false"); + } + /*check tag : not matched*/ + } else + _LOGD("tag process [%s]is not defined\n", ret_result); + } free(tag); /*check next value*/