[cfe-dev] [LLVMdev] ubsan - active member check for unions

Richard Smith richard at metafoo.co.uk
Fri Dec 19 18:59:48 PST 2014


On Thu, Dec 18, 2014 at 11:05 PM, Yury Gribov <y.gribov at samsung.com> wrote:
>
> On 12/19/2014 01:14 AM, Nick Lewycky wrote:
>
>> On 12/16/2014 02:43 AM, Yury Gribov wrote:
>>
>>> On 12/15/2014 10:24 PM, Ismail Pazarbasi wrote:
>>>
>>>>      s.d = 42.0;
>>>>      if (s.l > 100) // fire here
>>>>
>>>
>>> Note that code like this is frequently used to convert integers to
>>> floats so you'll get tons of false positives.
>>>
>>
>> True positives. The fix is to use memcpy instead.
>>
>
> Hm, I thought C aliasing rules explicitly allow changing types through
> unions.


See my previous email; the kindest thing I can say about how C treats
aliasing through unions is that it is confused.


> Anyway, the pattern is so widespread that IMHO most maintainers will find
> such errors useless.


Well, given that this is the bug that the sanitizer is built to detect,
such maintainers should not turn it on.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20141219/1ae013e6/attachment.html>


More information about the cfe-dev mailing list