From 9f5d1bc3cdf67815d0721dc9d5e9f1049e4cffd5 Mon Sep 17 00:00:00 2001
From: Ronny Chevalier <chevalier.ronny@gmail.com>
Date: Sun, 9 Nov 2014 15:42:23 +0100
Subject: udev: silence TOCTOU warning when creating a directory

CID#979416. There is no real race here to fix, but lets make coverity
happy and rework the code.

Note that we still fail if the directory is removed _after_ we ran
mkdir(), so the same race is still there. Coverity is complaining, though.
Rewrite the code to make it happy.

(David: rewrote the commit-message to note that this is not a race. If I'm
        wrong, blame me, not Ronny!)

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
---
 src/collect/collect.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/collect/collect.c b/src/collect/collect.c
index 7bc6571146..2d1baa1ddc 100644
--- a/src/collect/collect.c
+++ b/src/collect/collect.c
@@ -90,12 +90,12 @@ static void usage(void)
  */
 static int prepare(char *dir, char *filename)
 {
-        struct stat statbuf;
         char buf[512];
-        int fd;
+        int r, fd;
 
-        if (stat(dir, &statbuf) < 0)
-                mkdir(dir, 0700);
+        r = mkdir(dir, 0700);
+        if (r < 0 && errno != EEXIST)
+                return -errno;
 
         snprintf(buf, sizeof(buf), "%s/%s", dir, filename);
 
-- 
cgit v1.2.3-54-g00ecf