Check that the directory does not exist.
authorSylvestre Ledru <sylvestre@debian.org>
Mon, 16 Jun 2014 20:31:15 +0000 (20:31 +0000)
committerSylvestre Ledru <sylvestre@debian.org>
Mon, 16 Jun 2014 20:31:15 +0000 (20:31 +0000)
Otherwise, it could allows local users to obtain sensitive information or
overwrite arbitrary files via a symlink attack on temporary directories with
predictable names.

Reported as CVE-2014-2893 ( https://security-tracker.debian.org/tracker/CVE-2014-2893 )
Found by Jakub Wilk

llvm-svn: 211051

clang/tools/scan-build/scan-build

index 862bd3a..b740cd2 100755 (executable)
@@ -206,6 +206,12 @@ sub GetHTMLRunDir {
   else {
     $NewDir = "$Dir/$DateString-$RunNumber";
   }
+
+  # Make sure that the directory does not exist in order to avoid hijack.
+  if (-d $NewDir) {
+      DieDiag("The directory '$NewDir' already exists.\n");
+  }
+
   mkpath($NewDir);
   return $NewDir;
 }