[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