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>
This commit is contained in:
Ronny Chevalier 2014-11-09 15:42:23 +01:00 committed by Anthony G. Basile
parent 6740579367
commit 9f5d1bc3cd

View File

@ -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);