[llvm] r238895 - [BitcodeReader] Diagnose type mismatches with aliases
Filipe Cabecinhas
filcab at filcab.net
Sat Jun 6 13:50:02 PDT 2015
Sorry about the delay.
It’s done in r239228.
Thanks,
Filipe
> On Jun 5, 2015, at 12:07, Chad Rosier <mcrosier at codeaurora.org> wrote:
>
> +1 for Duncan's suggestion.
>
> -----Original Message-----
> From: llvm-commits-bounces at cs.uiuc.edu
> [mailto:llvm-commits-bounces at cs.uiuc.edu] On Behalf Of Duncan P. N. Exon
> Smith
> Sent: Friday, June 05, 2015 1:38 PM
> To: Filipe Cabecinhas
> Cc: llvm-commits at cs.uiuc.edu
> Subject: Re: [llvm] r238895 - [BitcodeReader] Diagnose type mismatches with
> aliases
>
>
>> On 2015-Jun-02, at 18:30, Filipe Cabecinhas <me at filcab.net> wrote:
>>
>> Author: filcab
>> Date: Tue Jun 2 20:30:13 2015
>> New Revision: 238895
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=238895&view=rev
>> Log:
>> [BitcodeReader] Diagnose type mismatches with aliases
>>
>> Bug found with AFL fuzz.
>>
>> Added:
>> llvm/trunk/test/Bitcode/Inputs/invalid-alias-type-mismatch.bc
>> Modified:
>> llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
>> llvm/trunk/test/Bitcode/invalid.test
>>
>> Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/Bitc
>> odeReader.cpp?rev=238895&r1=238894&r2=238895&view=diff
>> ======================================================================
>> ========
>> --- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
>> +++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Tue Jun 2
>> +++ 20:30:13 2015
>> @@ -2065,9 +2065,12 @@ std::error_code BitcodeReader::ResolveGl
>> if (ValID >= ValueList.size()) {
>> AliasInits.push_back(AliasInitWorklist.back());
>> } else {
>> - if (Constant *C = dyn_cast_or_null<Constant>(ValueList[ValID]))
>> - AliasInitWorklist.back().first->setAliasee(C);
>> - else
>> + if (Constant *C = dyn_cast_or_null<Constant>(ValueList[ValID])) {
>> + GlobalAlias *Alias = AliasInitWorklist.back().first;
>> + if (C->getType() != Alias->getType())
>> + return Error("Alias and aliasee types don't match");
>> + Alias->setAliasee(C);
>> + } else
>> return Error("Expected a constant");
>
> There's enough logic in there now, do you think it's worth flipping the if
> for an else after the return?
>
> Constant *C = ...;
> if (!C)
> return Error(...);
> GlobalAlias *Alias = ...;
> if (...)
> return Error(...);
> Alias->setAliasee(C);
>
> (At least, I find that easier to follow.)
>
>> }
>> AliasInitWorklist.pop_back();
>>
>> Added: llvm/trunk/test/Bitcode/Inputs/invalid-alias-type-mismatch.bc
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/Inputs/inv
>> alid-alias-type-mismatch.bc?rev=238895&view=auto
>> ======================================================================
>> ======== Binary files
>> llvm/trunk/test/Bitcode/Inputs/invalid-alias-type-mismatch.bc (added)
>> and llvm/trunk/test/Bitcode/Inputs/invalid-alias-type-mismatch.bc Tue
>> Jun 2 20:30:13 2015 differ
>>
>> Modified: llvm/trunk/test/Bitcode/invalid.test
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/invalid.te
>> st?rev=238895&r1=238894&r2=238895&view=diff
>> ======================================================================
>> ========
>> --- llvm/trunk/test/Bitcode/invalid.test (original)
>> +++ llvm/trunk/test/Bitcode/invalid.test Tue Jun 2 20:30:13 2015
>> @@ -197,3 +197,8 @@ RUN: not llvm-dis -disable-output %p/Inp
>> RUN: FileCheck --check-prefix=VECTOR-LENGTH %s
>>
>> VECTOR-LENGTH: Invalid vector length
>> +
>> +RUN: not llvm-dis -disable-output
> %p/Inputs/invalid-alias-type-mismatch.bc 2>&1 | \
>> +RUN: FileCheck --check-prefix=ALIAS-TYPE-MISMATCH %s
>> +
>> +ALIAS-TYPE-MISMATCH: Alias and aliasee types don't match
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list