]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
storage: Refetch file status after open
authorMichal Privoznik <mprivozn@redhat.com>
Fri, 25 Nov 2011 12:25:19 +0000 (13:25 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 25 Nov 2011 12:45:36 +0000 (13:45 +0100)
This partly reverts my previous patch f88de3eb. We need to
get file status after open, as given path could have been symlink,
so fstat() will operate on different file than lstat().

src/storage/storage_backend.c

index d30829db231a00c2bfca1cf52a9d33b5be1e4876..d7394e0e0e7c588670bff577534e3ac6566cfd6c 100644 (file)
@@ -1041,6 +1041,14 @@ virStorageBackendVolOpenCheckMode(const char *path, unsigned int flags)
         return -1;
     }
 
+    if (fstat(fd, &sb) < 0) {
+        virReportSystemError(errno,
+                             _("cannot stat file '%s'"),
+                             path);
+        VIR_FORCE_CLOSE(fd);
+        return -1;
+    }
+
     if (S_ISREG(sb.st_mode))
         mode = VIR_STORAGE_VOL_OPEN_REG;
     else if (S_ISCHR(sb.st_mode))