Fix static analyzer issue 37/169237/1
authorSangyoon Jang <jeremy.jang@samsung.com>
Mon, 5 Feb 2018 06:21:34 +0000 (15:21 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Mon, 5 Feb 2018 06:21:53 +0000 (15:21 +0900)
Add null checking before strcmp().

Change-Id: I2ef5976034958b41f71c60b9c69dd5c26049a695
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
parser/src/pkgmgr_parser_deprecated.c

index bae8fdc..080e909 100644 (file)
@@ -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*/