util/disk_cache: correctly use stat(3)
authorTimothy Arceri <tarceri@itsqueeze.com>
Sat, 11 Feb 2017 11:32:47 +0000 (22:32 +1100)
committerEmil Velikov <emil.l.velikov@gmail.com>
Mon, 13 Feb 2017 10:01:12 +0000 (10:01 +0000)
I forgot to error check stat() and also I wasn't using the subdir in
is_two_character_sub_directory().

Fixes: d7b3707c612 "util/disk_cache: use stat() to check if entry is a directory"
Reviewed-by: Plamena Manolova <plamena.manolova@intel.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
src/util/disk_cache.c

index 42fe432b8c4cb8931152adf91dc5b445eecaaa87..047a016006b8e434b4264a106b11adb35246f919 100644 (file)
@@ -445,10 +445,10 @@ is_regular_non_tmp_file(struct dirent *entry, const char *path)
       return false;
 
    struct stat sb;
-   stat(filename, &sb);
+   int res = stat(filename, &sb);
    free(filename);
 
-   if (!S_ISREG(sb.st_mode))
+   if (res == -1 || !S_ISREG(sb.st_mode))
       return false;
 
    size_t len = strlen (entry->d_name);
@@ -492,10 +492,10 @@ is_two_character_sub_directory(struct dirent *entry, const char *path)
       return false;
 
    struct stat sb;
-   stat(path, &sb);
+   int res = stat(subdir, &sb);
    free(subdir);
 
-   if (!S_ISDIR(sb.st_mode))
+   if (res == -1 || !S_ISDIR(sb.st_mode))
       return false;
 
    if (strlen(entry->d_name) != 2)