From a94e3465f201591669d667755de06929f1d0a515 Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Mon, 5 Feb 2018 15:21:34 +0900 Subject: [PATCH] Fix static analyzer issue Add null checking before strcmp(). Change-Id: I2ef5976034958b41f71c60b9c69dd5c26049a695 Signed-off-by: Sangyoon Jang --- parser/src/pkgmgr_parser_deprecated.c | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) 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*/ -- 2.7.4