[PATCH] D129840: Avoid UAF in WinCOFFObjectWriter with weak symbols.

Tim Besard via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 15 07:11:28 PDT 2022


maleadt updated this revision to Diff 444974.
maleadt added a comment.
This revision is now accepted and ready to land.

Fix test.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D129840/new/

https://reviews.llvm.org/D129840

Files:
  llvm/lib/MC/WinCOFFObjectWriter.cpp
  llvm/test/MC/COFF/weak-uaf.ll


Index: llvm/test/MC/COFF/weak-uaf.ll
===================================================================
--- /dev/null
+++ llvm/test/MC/COFF/weak-uaf.ll
@@ -0,0 +1,12 @@
+; RUN: llc --compile-twice -mtriple=x86_64-pc-win32 trivial.ll -filetype=obj
+
+; UAF when re-using the MCObjectWriter. does not leak into the output,
+; but should be detectable with --compile-twice under ASAN or so.
+
+define weak void @foo() nounwind {
+  ret void
+}
+
+define weak void @bar() nounwind {
+  ret void
+}
Index: llvm/lib/MC/WinCOFFObjectWriter.cpp
===================================================================
--- llvm/lib/MC/WinCOFFObjectWriter.cpp
+++ llvm/lib/MC/WinCOFFObjectWriter.cpp
@@ -169,6 +169,7 @@
     Strings.clear();
     SectionMap.clear();
     SymbolMap.clear();
+    WeakDefaults.clear();
     MCObjectWriter::reset();
   }
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D129840.444974.patch
Type: text/x-patch
Size: 841 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220715/ded043a8/attachment.bin>


More information about the llvm-commits mailing list