From 71085dba6527f86ff89ddbf62f07d8656190aa74 Mon Sep 17 00:00:00 2001 From: Roy Ivy III Date: Mon, 8 Mar 2021 12:12:32 -0600 Subject: [PATCH] fix(mkdir): mitigate directory creation race condition (#1019) --- src/mkdir.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/mkdir.js b/src/mkdir.js index 992df7c..644fe4a 100644 --- a/src/mkdir.js +++ b/src/mkdir.js @@ -19,17 +19,18 @@ function mkdirSyncRecursive(dir) { common.error('dirname() failed: [' + dir + ']'); } - // Base dir exists, no recursion necessary - if (fs.existsSync(baseDir)) { - fs.mkdirSync(dir, parseInt('0777', 8)); - return; + // Base dir does not exist, go recursive + if (!fs.existsSync(baseDir)) { + mkdirSyncRecursive(baseDir); } - // Base dir does not exist, go recursive - mkdirSyncRecursive(baseDir); - - // Base dir created, can create dir - fs.mkdirSync(dir, parseInt('0777', 8)); + try { + // Base dir created, can create dir + fs.mkdirSync(dir, parseInt('0777', 8)); + } catch (e) { + // swallow error if dir already exists + if (e.code !== 'EEXIST' || common.statNoFollowLinks(dir).isFile()) { throw e; } + } } //@