This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc 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: [PATCH v5] libio: do not attempt to free wide buffers of legacy streams [BZ #24228]


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

Sorry, it took me a while to really understand this issue.

Florian


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