[Mlir-commits] [mlir] [mlir][bytecode] Fix SourceMgr lifetime extension in BytecodeReader (PR #185321)
Jacques Pienaar
llvmlistbot at llvm.org
Mon Mar 9 05:52:26 PDT 2026
================
@@ -231,6 +233,38 @@ TEST(Bytecode, OpWithoutProperties) {
OperationEquivalence::computeHash(roundtripped));
}
+TEST(Bytecode, SourceMgrLifetimeExtendedByReader) {
+ MLIRContext context;
+
+ // Create a trivial module and serialize it to bytecode.
+ OwningOpRef<ModuleOp> module =
+ ModuleOp::create(UnknownLoc::get(&context));
+ std::string bytecode;
+ llvm::raw_string_ostream os(bytecode);
+ ASSERT_TRUE(succeeded(writeBytecodeToFile(module.get(), os)));
+
+ // Build a BytecodeReader whose SourceMgr goes out of scope immediately after
+ // construction. The reader must keep it alive via shared ownership, otherwise
+ // readTopLevel will access freed memory (UAF).
+ ParserConfig config(&context);
+ std::shared_ptr<BytecodeReader> reader;
----------------
jpienaar wrote:
Why is this a shared_ptr?
https://github.com/llvm/llvm-project/pull/185321
More information about the Mlir-commits
mailing list