From bf9dffe7d8e3442843db33f02ea4ad95e20ba6e7 Mon Sep 17 00:00:00 2001 From: Tudor Marcu Date: Tue, 18 Oct 2016 16:23:14 -0700 Subject: [PATCH] Fix uninitialized return value in rmdir paths Signed-off-by: Tudor Marcu --- src/helpers.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/helpers.c b/src/helpers.c index 2c4de321..285071fb 100644 --- a/src/helpers.c +++ b/src/helpers.c @@ -61,7 +61,7 @@ int rm_staging_dir_contents(const char *rel_path) struct dirent *entry; char *filename; char *abs_path; - int ret = -1; + int ret = 0; string_or_die(&abs_path, "%s/%s", state_dir, rel_path); @@ -75,6 +75,8 @@ int rm_staging_dir_contents(const char *rel_path) while(true) { entry = readdir(dir); if (!entry) { + /* readdir returns NULL on the end of a directory stream, we only + * want to set ret if errno is also set, indicating a failure */ if (errno) { ret = errno; } @@ -94,7 +96,6 @@ int rm_staging_dir_contents(const char *rel_path) break; } free(filename); - ret = 0; } free(abs_path); @@ -380,7 +381,8 @@ static int swupd_rm_dir(const char *path) DIR *dir; struct dirent *entry; char *filename = NULL; - int ret, err; + int ret = 0; + int err; dir = opendir(path); if (dir == NULL) {