[llvm-commits] [lld] r167245 - /lld/trunk/lib/ReaderWriter/MachO/WriterMachO.cpp
Michael Spencer
bigcheesegs at gmail.com
Thu Nov 1 13:38:40 PDT 2012
On Thu, Nov 1, 2012 at 1:15 PM, Nick Kledzik <kledzik at apple.com> wrote:
>
> On Nov 1, 2012, at 12:46 PM, Michael J. Spencer wrote:
>> Author: mspencer
>> Date: Thu Nov 1 14:46:06 2012
>> New Revision: 167245
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=167245&view=rev
>> Log:
>> [MachO] Fix use after free.
>>
>> Modified:
>> lld/trunk/lib/ReaderWriter/MachO/WriterMachO.cpp
>>
>> Modified: lld/trunk/lib/ReaderWriter/MachO/WriterMachO.cpp
>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/WriterMachO.cpp?rev=167245&r1=167244&r2=167245&view=diff
>> ==============================================================================
>> --- lld/trunk/lib/ReaderWriter/MachO/WriterMachO.cpp (original)
>> +++ lld/trunk/lib/ReaderWriter/MachO/WriterMachO.cpp Thu Nov 1 14:46:06 2012
>> @@ -206,6 +206,7 @@
>> dyld_info_command *_dyldInfoLoadCommand;
>> std::vector<load_command*> _loadCmds;
>> std::vector<ChunkSegInfo> _sectionInfo;
>> + llvm::StringMap<uint32_t> dylibNamesToOrdinal;
>> };
>>
>>
>> @@ -774,7 +775,6 @@
>> this->addLoadCommand(new dylinker_command("/usr/lib/dyld", is64));
>>
>> // Add dylib load commands.
>> - llvm::StringMap<uint32_t> dylibNamesToOrdinal;
>> for (const SharedLibraryAtom* shlibAtom : file.sharedLibrary() ) {
>> StringRef installName = shlibAtom->loadName();
>> if ( dylibNamesToOrdinal.count(installName) == 0 ) {
>
> Where was dylibNamesToOrdinal used outside the method where it is a local?
>
> -Nick
Ah, I should have included that in the message.
Line 785:
for (llvm::StringMap<uint32_t>::iterator it=dylibNamesToOrdinal.begin(),
end=dylibNamesToOrdinal.end(); it != end; ++it) {
this->addLoadCommand(new dylib_command(it->first(), is64));
}
dylib_command takes a StringRef. It is later copied on line 496.
Also note that dylib_command is never deleted. Same for all the
commands. They really should be using unique_ptr or a bumpptr
allocator.
- Michael Spencer
More information about the llvm-commits
mailing list