glibc/libio
Siddhesh Poyarekar 3e1d8d1d1d ungetc: Fix backup buffer leak on program exit [BZ #27821]
If a file descriptor is left unclosed and is cleaned up by _IO_cleanup
on exit, its backup buffer remains unfreed, registering as a leak in
valgrind.  This is not strictly an issue since (1) the program should
ideally be closing the stream once it's not in use and (2) the program
is about to exit anyway, so keeping the backup buffer around a wee bit
longer isn't a real problem.  Free it anyway to keep valgrind happy
when the streams in question are the standard ones, i.e. stdout, stdin
or stderr.

Also, the _IO_have_backup macro checks for _IO_save_base,
which is a roundabout way to check for a backup buffer instead of
directly looking for _IO_backup_base.  The roundabout check breaks when
the main get area has not been used and user pushes a char into the
backup buffer with ungetc.  Fix this to use the _IO_backup_base
directly.

Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2024-08-15 13:56:13 -04:00
..
bits Fix name space violation in fortify wrappers (bug 32052) 2024-08-05 16:49:58 +02:00
__fbufsize.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
__flbf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
__fpending.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
__fpurge.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
__freadable.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
__freading.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
__fsetlocking.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
__fwritable.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
__fwriting.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
bug-fopena+.c
bug-fseek.c tests: replace fread by xfread 2023-06-13 19:59:08 -04:00
bug-ftell.c
bug-memstream1.c
bug-mmap-fflush.c tests: replace system by xsystem 2023-06-19 09:15:05 -04:00
bug-rewind2.c
bug-rewind.c
bug-ungetc2.c
bug-ungetc3.c tests: replace write by xwrite 2023-06-01 12:40:05 -04:00
bug-ungetc4.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
bug-ungetc.c tests: replace write by xwrite 2023-06-01 12:40:05 -04:00
bug-ungetwc1.c
bug-ungetwc2.c
bug-wfflush.c tests: replace write by xwrite 2023-06-01 12:40:05 -04:00
bug-wmemstream1.c
bug-wsetpos.c libio/bug-wsetpos: Make the error message match the causing function 2024-05-13 12:50:48 +01:00
clearerr_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
clearerr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
Depend
fcloseall.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
feof_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
feof.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ferror_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ferror.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
filedoalloc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fileno.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fileops.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fmemopen.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fputc_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fputc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fputwc_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fputwc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
freopen64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
freopen.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fseek.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fseeko64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fseeko.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ftello64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ftello.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fwide.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fwprintf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fwscanf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
genops.c ungetc: Fix backup buffer leak on program exit [BZ #27821] 2024-08-15 13:56:13 -04:00
getc_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getchar_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getchar.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getwc_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getwc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getwchar_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getwchar.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofclose.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofdopen.c Remove memory leak in fdopen (bug 31840) 2024-06-04 14:42:06 +02:00
iofflush_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofflush.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofgetpos64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofgetpos.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofgets_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofgets.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofgetws_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofgetws.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofopen64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofopen.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofopncook.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofputs_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofputs.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofputws_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofputws.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofread_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofread.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofsetpos64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofsetpos.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ioftell.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofwide.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofwrite_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iofwrite.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iogetdelim.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iogetline.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iogets.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iogetwline.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iolibio.h
iopadn.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iopopen.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ioputs.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ioseekoff.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ioseekpos.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iosetbuffer.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iosetvbuf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ioungetc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ioungetwc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iovdprintf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iovsprintf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iovsscanf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iovswscanf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
iowpadn.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
libc_fatal.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
libio-macros.sym libio: Remove the usage of __libc_IO_vtables 2023-03-27 13:57:55 -03:00
libio.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
libioP.h ungetc: Fix backup buffer leak on program exit [BZ #27821] 2024-08-15 13:56:13 -04:00
Makefile libio: handle opening a file when all files are closed (bug 31963) 2024-07-09 10:12:36 +02:00
memstream.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
obprintf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
oldfileops.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
oldfmemopen.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
oldiofclose.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
oldiofdopen.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
oldiofgetpos64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
oldiofgetpos.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
oldiofopen.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
oldiofsetpos64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
oldiofsetpos.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
oldiopopen.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
oldpclose.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
oldstdfiles.c Change _IO_stderr_/_IO_stdin_/_IO_stdout to compat symbols [BZ #31766] 2024-05-21 10:12:25 -07:00
oldtmpfile.c posix: Sync tempname with gnulib 2024-04-10 14:53:39 -03:00
pclose.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
peekc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
putc_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
putc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
putchar_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
putchar.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
putwc_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
putwc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
putwchar_u.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
putwchar.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
rewind.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
setbuf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
setlinebuf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
stdfiles.c Use a doubly-linked list for _IO_list_all (bug 27777) 2024-05-17 14:13:25 -07:00
stdio.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
stdio.h <stdio.h>: Acknowledge that getdelim/getline are in POSIX 2024-06-11 22:17:12 +01:00
strfile.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
strops.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
swprintf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
swscanf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
test-fmemopen.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
test-freopen.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
test-freopen.sh Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst_getwc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst_getwc.input
tst_putwc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst_swprintf.c libio: Convert __vswprintf_internal to buffers (bug 27857) 2022-12-19 18:56:55 +01:00
tst_swscanf.c Use '%z' instead of '%Z' on printf functions 2022-09-22 08:48:04 -03:00
tst_wprintf2.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
tst_wprintf.c
tst_wscanf.c
tst_wscanf.input
tst-atime.c
tst-bz22415.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-bz24051.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-bz24153.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-bz24228.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-bz24228.map
tst-bz28828.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-bz28828.input libio: Ensure output buffer for wchars (bug #28828) 2022-03-08 14:25:32 -03:00
tst-cleanup-default-static.c Set the retain attribute on _elf_set_element if CC supports [BZ #27492] 2021-04-16 11:26:39 -07:00
tst-cleanup-default.c Set the retain attribute on _elf_set_element if CC supports [BZ #27492] 2021-04-16 11:26:39 -07:00
tst-cleanup-nostart-stop-gc-static.c Set the retain attribute on _elf_set_element if CC supports [BZ #27492] 2021-04-16 11:26:39 -07:00
tst-cleanup-nostart-stop-gc.c Set the retain attribute on _elf_set_element if CC supports [BZ #27492] 2021-04-16 11:26:39 -07:00
tst-cleanup-start-stop-gc-static.c Set the retain attribute on _elf_set_element if CC supports [BZ #27492] 2021-04-16 11:26:39 -07:00
tst-cleanup-start-stop-gc.c Set the retain attribute on _elf_set_element if CC supports [BZ #27492] 2021-04-16 11:26:39 -07:00
tst-cleanup.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cleanup.exp Set the retain attribute on _elf_set_element if CC supports [BZ #27492] 2021-04-16 11:26:39 -07:00
tst-closeall.c libio: handle opening a file when all files are closed (bug 31963) 2024-07-09 10:12:36 +02:00
tst-eof.c
tst-ext2.c
tst-ext.c Use '%z' instead of '%Z' on printf functions 2022-09-22 08:48:04 -03:00
tst-fdopen-seek-failure.c libio: Test for fdopen memory leak without SEEK_END support (bug 31840) 2024-06-04 16:09:33 +02:00
tst-fgetc-after-eof.c
tst-fgetwc.c
tst-fgetwc.input
tst-fgetws.c
tst-fopenloc2.c
tst-fopenloc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-fputws.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-freopen.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-fseek.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-ftell-active-handler.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-ftell-append.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-ftell-partial-wide.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-fwrite-error.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-getdelim.c libio/tst-getdelim: Add new test covering NUL as a delimiter 2024-08-14 11:48:34 +02:00
tst-memstream1.c
tst-memstream2.c
tst-memstream3.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-memstream4.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-memstream.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-mmap2-eofsync.c
tst-mmap-eofsync.c
tst-mmap-fflushsync.c
tst-mmap-offend.c
tst-mmap-setvbuf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-popen1.c Enable support for GCC 11 -Wmismatched-dealloc. 2021-05-16 15:21:18 -06:00
tst-setvbuf1.c Fix all the remaining misspellings -- BZ 25337 2023-06-02 01:39:48 +00:00
tst-sprintf-chk-ub.c
tst-sprintf-ub.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-sscanf.c
tst-stderr-compat.c Add crt1-2.0.o for glibc 2.0 compatibility tests 2024-05-06 07:49:40 -07:00
tst-swscanf.c
tst-ungetwc1.c
tst-ungetwc2.c
tst-vtables-common.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-vtables-interposed.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-vtables.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-wfile-sync.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-widetext.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-widetext.input
tst-wmemstream1.c Enable support for GCC 11 -Wmismatched-dealloc. 2021-05-16 15:21:18 -06:00
tst-wmemstream2.c
tst-wmemstream3.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-wmemstream4.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-wmemstream5.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
vasprintf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
Versions Add missing symbols to Version files 2021-06-02 07:32:19 +02:00
vscanf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
vsnprintf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
vswprintf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
vtables.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
vwprintf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
vwscanf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
wfiledoalloc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
wfileops.c libio: Check remaining buffer size in _IO_wdo_write (bug 31183) 2024-01-02 14:36:17 +01:00
wgenops.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
wmemstream.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
wprintf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
wscanf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
wstrops.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00