[Driver] Stop stack use after free
authorAlex Brachet <abrachet@google.com>
Fri, 10 Feb 2023 22:39:29 +0000 (22:39 +0000)
committerAlex Brachet <abrachet@google.com>
Fri, 10 Feb 2023 22:42:12 +0000 (22:42 +0000)
In reality this would have always been fine because main's
stack frame will always be live when another thread is
executing the cc1_reproducer_main. But ASan and HWASan
were upset

clang/tools/driver/driver.cpp

index 52d391fc69712db58da67fcdf52a006ead509686..3ec2bcc0bd7533cac546ca1c7fdc4a657a3a9675 100644 (file)
@@ -537,7 +537,7 @@ int clang_main(int Argc, char **Argv, const llvm::ToolContext &ToolContext) {
     return 1;
 
   if (!UseNewCC1Process) {
-    TheDriver.CC1Main = [&ToolContext](SmallVectorImpl<const char *> &ArgV) {
+    TheDriver.CC1Main = [ToolContext](SmallVectorImpl<const char *> &ArgV) {
       return ExecuteCC1Tool(ArgV, ToolContext);
     };
     // Ensure the CC1Command actually catches cc1 crashes