[llvm] r271139 - [llvm-readobj] Validate the string table offset before using it

David Majnemer via llvm-commits llvm-commits at lists.llvm.org
Sun May 29 10:09:29 PDT 2016


Not really, I have no way to reduce the test down to something reasonable.
I'd rather not see the LLVM repo become a collection of large, malformed
PDB files.

On Sun, May 29, 2016 at 9:25 AM, David Blaikie <dblaikie at gmail.com> wrote:

> any chance of test cases for all this error handling being added?
>
> On Sat, May 28, 2016 at 12:45 PM, David Majnemer via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: majnemer
>> Date: Sat May 28 14:45:49 2016
>> New Revision: 271139
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=271139&view=rev
>> Log:
>> [llvm-readobj] Validate the string table offset before using it
>>
>> Modified:
>>     llvm/trunk/tools/llvm-readobj/COFFDumper.cpp
>>
>> Modified: llvm/trunk/tools/llvm-readobj/COFFDumper.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/COFFDumper.cpp?rev=271139&r1=271138&r2=271139&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/tools/llvm-readobj/COFFDumper.cpp (original)
>> +++ llvm/trunk/tools/llvm-readobj/COFFDumper.cpp Sat May 28 14:45:49 2016
>> @@ -794,14 +794,20 @@ void COFFDumper::printCodeViewSymbolSect
>>        while (!Contents.empty()) {
>>          const FrameData *FD;
>>          error(consumeObject(Contents, FD));
>> +
>> +        if (FD->FrameFunc >= CVStringTable.size())
>> +          error(object_error::parse_failed);
>> +
>> +        StringRef FrameFunc =
>> +            CVStringTable.drop_front(FD->FrameFunc).split('\0').first;
>> +
>>          DictScope S(W, "FrameData");
>>          W.printHex("RvaStart", FD->RvaStart);
>>          W.printHex("CodeSize", FD->CodeSize);
>>          W.printHex("LocalSize", FD->LocalSize);
>>          W.printHex("ParamsSize", FD->ParamsSize);
>>          W.printHex("MaxStackSize", FD->MaxStackSize);
>> -        W.printString("FrameFunc",
>> -
>> CVStringTable.drop_front(FD->FrameFunc).split('\0').first);
>> +        W.printString("FrameFunc", FrameFunc);
>>          W.printHex("PrologSize", FD->PrologSize);
>>          W.printHex("SavedRegsSize", FD->SavedRegsSize);
>>          W.printFlags("Flags", FD->Flags, makeArrayRef(FrameDataFlags));
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160529/40c7300e/attachment.html>


More information about the llvm-commits mailing list