]> granicus.if.org Git - clang/commitdiff
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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211051 91177308-0d34-0410-b5e6-96231b3b80d8

tools/scan-build/scan-build

index 862bd3a4ca3294ee9ba5bcd420bed8e17c8984f8..b740cd21e6b2a729524581c660ed0916bfb4e9fb 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;
 }