Liste des Groupes | Revenir à cl c |
On 2024-03-20, Stefan Ram <ram@zedat.fu-berlin.de> wrote:Using LTO is not "stupid". Relying on people /not/ using LTO, or not using other valid optimisations, is "stupid".A "famous security bug":I don't know about "the bug", but conditions can be identified under
>
void f( void )
{ char buffer[ MAX ];
/* . . . */
memset( buffer, 0, sizeof( buffer )); }
>
. Can you see what the bug is?
which that would have a problem executing, like MAX being in excess
of available automatic storage.
If the /*...*/ comment represents the elision of some security sensitive
code, where the memset is intended to obliterate secret information,
of course, that obliteration is not required to work.
After the memset, the buffer has no next use, so the all the assignments
performed by memset to the bytes of buffer are dead assignments that can
be elided.
To securely clear memory, you have to use a function for that purpose
that is not susceptible to optimization.
If you're not doing anything stupid, like link time optimization, an
external function in another translation unit (a function that the
compiler doesn't recognize as being an alias or wrapper for memset)
ought to suffice.
Les messages affichés proviennent d'usenet.