This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Optimising away memset() calls?


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).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]