> On Jun 18, 2025, at 17:57, Siddhesh Poyarekar <siddh...@gotplt.org> wrote:
> 
> On 2025-06-18 17:46, Qing Zhao wrote:
>> Okay, I guess that I didn’t put enough attention on the above example 
>> previously, sorry about that...
>> Read it multiple times this time, my question is for the following code 
>> portion:
>>  objsz = __builtin_dynamic_object_size (ptr, 0);
>>  __memcpy_chk (ptr, src, sz, objsz);
>> When program get  to the this point, “ptr” is freed and invalid already,  is 
>> the program still considered as a valid program when the first argument to 
>> the call to __memcpy_chk is an invalid pointer but the 3rd parameter is 0?
> 
> AFAICT, strictly according to the standards it should not be considered valid 
> since any use of an invalid pointer (not just dereferencing it) is considered 
> undefined behaviour.  However in practice it doesn't result in an invalid 
> access because of SZ=0.

Then should we follow the standards here? i.e, even though the program does not 
result in an invalid access because of SZ=0, the program has undefined behavior 
due to the use of invalid pointer?

Qing
> 
> Sid

Reply via email to