Fix: fix coverity issue 64/242564/1
authorJeon Sang-Heon <sh95.jeon@samsung.com>
Fri, 28 Aug 2020 09:42:00 +0000 (09:42 +0000)
committerJeon Sang-Heon <sh95.jeon@samsung.com>
Fri, 28 Aug 2020 10:14:52 +0000 (10:14 +0000)
- CID(1146551) : fix fd_dst assert condition
- CID(11469111146942) : set file descriptor to -1 after close to prevent double close
- CID(1146433) : count num_recovery before check condition

Change-Id: I0bdd7fe7d3b4a2adafb79185c64b99d3f94fe3af
Signed-off-by: Jeon Sang-Heon <sh95.jeon@samsung.com>
src/system-recovery.c

index 27c841e5b00ac87bdc583686d6f8c95b9c78f967..477d1d37361b3ced8369074b82aa1b419fb58fd0 100644 (file)
@@ -84,7 +84,8 @@ static int find_recovery_image(void)
                                 * Stop process with many recovery images
                                 * to prevent working with unintended image
                                 */
-                               ASSERT_RETV(num_recovery_img++ == 0, EMFILE,
+                               num_recovery_img++;
+                               ASSERT_RETV(num_recovery_img == 1, EMFILE,
                                                "There are many recovery images. Please put exactly one image");
 
                                snprintf(recovery_image_path, sizeof(recovery_image_path), "%s", path);
@@ -285,7 +286,7 @@ static int do_recovery(struct image *image_list)
                ASSERT_RETV(fd_src != -1, errno, "Failed to open image (%d)", errno);
 
                fd_dst = open(image_list->devpath, O_WRONLY);
-               ASSERT_RETV(fd_dst, errno, "Failed to open device (%d)", errno);
+               ASSERT_RETV(fd_dst != -1, errno, "Failed to open device (%d)", errno);
 
                while ((data_size = read(fd_src, buf, sizeof(buf))) > 0) {
                        update_progress(data_size);
@@ -295,6 +296,10 @@ static int do_recovery(struct image *image_list)
 
                close(fd_dst);
                close(fd_src);
+
+               fd_dst = -1;
+               fd_src = -1;
+
                image_list = image_list->next;
        }
        _I("=== Image writing end ===");