[llvm] r241345 - Avoid a use after free.

Duncan P. N. Exon Smith dexonsmith at apple.com
Fri Jul 3 10:08:53 PDT 2015


> On 2015-Jul-03, at 05:20, Rafael Espindola <rafael.espindola at gmail.com> wrote:
> 
> Author: rafael
> Date: Fri Jul  3 07:20:34 2015
> New Revision: 241345
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=241345&view=rev
> Log:
> Avoid a use after free.

Was this triggered by an in-tree testcase, or should we add one?

(If you don't think a testcase would be stable, maybe a comment?)

> 
> Modified:
>    llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
> 
> Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=241345&r1=241344&r2=241345&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
> +++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Fri Jul  3 07:20:34 2015
> @@ -4459,7 +4459,10 @@ std::error_code BitcodeReader::materiali
>   // Upgrade any old intrinsic calls in the function.
>   for (auto &I : UpgradedIntrinsics) {
>     if (I.first != I.second) {
> -      for (auto *U : I.first->users()) {
> +      for (auto UI = I.first->user_begin(), UE = I.first->user_end();
> +           UI != UE;) {
> +        User *U = *UI;
> +        ++UI;
>         if (CallInst *CI = dyn_cast<CallInst>(U))
>           UpgradeIntrinsicCall(CI, I.second);
>       }
> 
> 
> _______________________________________________
> 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