[llvm] r292575 - BitVector: Fix undefined behaviour
Matthias Braun via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 23 11:19:09 PST 2017
Sure, committed r292817 for that.
> On Jan 23, 2017, at 9:47 AM, David Blaikie via llvm-commits <llvm-commits at lists.llvm.org> wrote:
>
> I realize it's UB, so not exactly testable - but a unit test that exercises this (& that, say, asan would have failed on without the fix) would be good.
>
> On Thu, Jan 19, 2017 at 8:34 PM Matthias Braun via llvm-commits <llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>> wrote:
> Author: matze
> Date: Thu Jan 19 22:23:08 2017
> New Revision: 292575
>
> URL: http://llvm.org/viewvc/llvm-project?rev=292575&view=rev <http://llvm.org/viewvc/llvm-project?rev=292575&view=rev>
> Log:
> BitVector: Fix undefined behaviour
>
> Calling reset() on an empty BitVector would call memset with a nullptr
> argument which is undefined behaviour.
>
> This should fix the sanitizer bot.
>
> Modified:
> llvm/trunk/include/llvm/ADT/BitVector.h
>
> Modified: llvm/trunk/include/llvm/ADT/BitVector.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/BitVector.h?rev=292575&r1=292574&r2=292575&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/BitVector.h?rev=292575&r1=292574&r2=292575&view=diff>
> ==============================================================================
> --- llvm/trunk/include/llvm/ADT/BitVector.h (original)
> +++ llvm/trunk/include/llvm/ADT/BitVector.h Thu Jan 19 22:23:08 2017
> @@ -539,7 +539,8 @@ private:
> }
>
> void init_words(BitWord *B, unsigned NumWords, bool t) {
> - memset(B, 0 - (int)t, NumWords*sizeof(BitWord));
> + if (NumWords > 0)
> + memset(B, 0 - (int)t, NumWords*sizeof(BitWord));
> }
>
> template<bool AddBits, bool InvertMask>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
> _______________________________________________
> 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/20170123/66ea0264/attachment.html>
More information about the llvm-commits
mailing list