[PATCH v5] libio: do not attempt to free wide buffers of legacy streams [BZ #24228]

Dmitry V. Levin ldv@altlinux.org
Thu Jun 20 17:42:00 GMT 2019


On Thu, Jun 20, 2019 at 10:59:28AM +0200, Florian Weimer wrote:
> * Dmitry V. Levin:
> 
> > Commit a601b74d31ca086de38441d316a3dee24c866305 aka glibc-2.23~693
> > ("In preparation for fixing BZ#16734, fix failure in misc/tst-error1-mem
> > when _G_HAVE_MMAP is turned off.") introduced a regression:
> > _IO_unbuffer_all now invokes _IO_wsetb to free wide buffers of all
> > files, including legacy standard files which are small statically
> > allocated objects that do not have wide buffers and the _mode member,
> > causing memory corruption.
> >
> > Another memory corruption in _IO_unbuffer_all happens when -1
> > is assigned to the _mode member of legacy standard files that
> > do not have it.
> >
> > [BZ #24228]
> > * libio/genops.c (_IO_unbuffer_all)
> > [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)]: Do not attempt to free wide
> > buffers and access _IO_FILE_complete members of legacy libio streams.
> > * libio/tst-bz24228.c: New file.
> > * libio/tst-bz24228.map: Likewise.
> > * libio/Makefile [build-shared] (tests): Add tst-bz24228.
> > [build-shared] (generated): Add tst-bz24228.mtrace and
> > tst-bz24228.check.
> > [run-built-tests && build-shared] (tests-special): Add
> > $(objpfx)tst-bz24228-mem.out.
> > (LDFLAGS-tst-bz24228, tst-bz24228-ENV): New variables.
> > ($(objpfx)tst-bz24228-mem.out): New rule.
> 
> This version looks fine to me.  Thanks.

Pushed.  Thanks.


-- 
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20190620/cb3fe29e/attachment.sig>


More information about the Libc-alpha mailing list