Optimising away memset() calls?

Ángel González keisial@gmail.com
Fri Oct 10 17:25:00 GMT 2014


On 10/10/14 11:20, Andrew Haley wrote:
> On 09/10/14 21:52, Ángel González wrote:
>
>> The compiler would need to know that memset_s is special (either
>> intrinsically or thorugh eg. function attributes). Either way, IMHO
>> an advanced knowledge allowing to optimize it out would be a
>> violation of K.3.7.4.1.
> It would be a perverse thing to do and goes against intent, but we
> again fall into the problem of defining an access.  But this is
> irrelevant anyway: even if a key is stored in an array X in the source
> code and the array X is later wiped with memset_s(), there is
> absolutely nothing to force the compiler to use X during the
> computation: it may well store the key somewhere else altogether.  So,
> all we can have here is a best effort.  Anyone who wants to be sure
> that the key is wiped is going to have to do something machine-
> dependent.
>
> Andrew.
This is a different problem: While the compiler must wipe X, the compiler
might have stored copies somewhere else (typically in the stack, although
it would be possible to leave sensitive data in registers that aren't 
overwritten
later).



More information about the Gcc-help mailing list