This is the mail archive of the newlib@sourceware.org mailing list for the newlib 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] |
On Aug 16 17:53, Meador Inge wrote: > Hi All, > > This patch fixes an issue that occurs when greater than _ATEXIT_SIZE > exit procedures of type '__et_cxa' are registered, small reentrant > structure support is enabled, and dynamic allocation of atexit entries > is enabled. This bug is fairly easy to run into if you have a C++ > program with lots of objects that have static storage duration. The > control flow where the problem is encountered in '__register_exitproc' > goes like: > > 1. 'p->_ind >= _ATEXIT_SIZE' is true and a new '_atexit' structure > is dynamically allocated and stored in 'p'. > > 2. 'p->_on_exit_args_ptr' is *not* set to NULL. > > 3. 'type != __et_atexit' is true. > > 4. At this point a new '_on_exit_args' structure should be created > as well, but if 'p->_on_exit_args_ptr' happens to be non-NULL, > then it isn't and bad things happen later when 'p->_on_exit_args_ptr' > is used. > > The problem is fixed by properly initializing '_on_exit_args_ptr' to > NULL. > > OK? > > 2013-08-16 Meador Inge <...> > > * libc/stdlib/__atexit.c (__register_exitproc): NULL-ify > '_on_exit_args_ptr' when creating a new '_atexit' structure > while '_REENT_SMALL' is defined. Patch applied. Thanks, Corinna -- Corinna Vinschen Cygwin Maintainer Red Hat
Attachment:
pgps0LVdiljXx.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |