On Thu, Sep 18, 2014 at 4:11 PM, jahanian <[email protected]> wrote:

>
> On Sep 18, 2014, at 1:03 PM, Nico Weber <[email protected]> wrote:
>
> On Thu, Sep 18, 2014 at 11:38 AM, jahanian <[email protected]> wrote:
>
>>
>> On Sep 18, 2014, at 11:33 AM, Reid Kleckner <[email protected]> wrote:
>>
>> > Cool! Do these warnings fire on plain memcpy if the system headers
>> don't arrange for memcpy to route to __builtin__memcpy_chk? If so, can you
>> add tests for plain prototyped memcpy as you did for strlcpy in the
>> previous test?
>> >
>>
>> No they don’t. Note that __builtin__memcpy_chk, etc. will have an added
>> argument,  __builtin_object_size,  which will have
>> the size of destination buffer and is needed to do the checking.
>>
>
> But you can just call the code that does the computation that
> __builtin_object_size does when checking memcpy, right?
>
>
> I am not sure what you mean. memcpy does not do any checking for overflow.
> You may do the checking for overflow before calling
> memcpy yourself (essentially do what __builtin_memcpy_chk does).
>

But it's detectable at compile time, right? Consider this, slightly changed
from your tests:

  static char buf[10];
  memcpy(&buf[6], in, 5);

Is there any reason this shouldn't say "memcpy will always overflow
destination buffer"?
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to