[PATCH] libio: Add terminating NUL when the first character is EOF in getdelim [BZ #28038]
Florian Weimer
fweimer@redhat.com
Thu Oct 9 07:39:38 GMT 2025
* Collin Funk:
> POSIX requires that the buffer used by getdelim/getline add a
> terminating NUL whenever an EOF is read.
>
> * libio/iogetdelim.c (__getdelim): Add a NUL byte when the first
> __underflow is called.
> * libio/tst-getdelim.c (do_test): Add a test case for the bug.
>
> -- 8< --
>
> If this patch is okay for glibc, then I will push it to Gnulib as well
> since the function is mostly copied over there.
>
> ---
> libio/iogetdelim.c | 1 +
> libio/tst-getdelim.c | 17 +++++++++++++++++
> 2 files changed, 18 insertions(+)
>
> diff --git a/libio/iogetdelim.c b/libio/iogetdelim.c
> index 0bfaef227a..1d89757352 100644
> --- a/libio/iogetdelim.c
> +++ b/libio/iogetdelim.c
> @@ -77,6 +77,7 @@ __getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
> if (__underflow (fp) == EOF)
> {
> result = -1;
> + (*lineptr)[0] = '\0';
> goto unlock_return;
> }
> len = fp->_IO_read_end - fp->_IO_read_ptr;
Looks okay. The buffer is already allocated at this point. I don't
think there is backwards compatibility impact.
Reviewed-by: Florian Weimer <fweimer@redhat.com>
Thanks,
Florian
More information about the Libc-alpha
mailing list