nuttx/libs/libc/stdio
Xiang Xiao fa1bbce9c9 libc/stdio: allocate a buffer in getdelim() when *lineptr is NULL
POSIX requires getdelim()/getline() to allocate a new buffer whenever
*lineptr is NULL, regardless of the value of *n.  The previous code read
the buffer size from *n unconditionally and only fell back to the initial
size when *n was zero, so a caller that passes *lineptr == NULL together
with an uninitialized (non-zero) *n caused lib_malloc() to be invoked with
that garbage size and typically fail with ENOMEM.

Treat a NULL *lineptr the same as a zero *n: (re)allocate from the known
BUFSIZE_INIT and ignore the untrusted *n.  This matches the glibc
behaviour that portable code relies on (for example toybox grep, which
calls getdelim() with an uninitialized size variable).

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2026-09-23 12:52:09 +08:00
..
CMakeLists.txt libc: Move stream printf/scanf from libc/stdio to libc/stream 2025-06-18 09:24:38 +08:00
Kconfig !libc/stream: remove CONFIG_LIBC_LONG_LONG and always support long long 2026-05-19 16:21:28 +08:00
lib_asprintf.c libc: add nx_strdup() & nx_strndup() support 2024-10-15 01:16:48 +08:00
lib_clearerr.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_dprintf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fclose.c !include/fcntl.h: align open flags with Linux values 2026-06-30 13:43:44 +08:00
lib_feof.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_ferror.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fflush.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fgetc.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fgetpos.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fgets.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fgetwc.c style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
lib_fileno.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fmemopen.c !include/fcntl.h: align open flags with Linux values 2026-06-30 13:43:44 +08:00
lib_fopen.c include/fcntl.h: remove O_RDOK/O_WROK aliases 2026-06-28 09:10:11 -03:00
lib_fopencookie.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fprintf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fputc.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fputs.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fputwc.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fputws.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fread.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_freopen.c freopen: fix fdsan report error 2026-01-15 22:58:17 +08:00
lib_fscanf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fseek.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fseeko.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fsetpos.c fsetpos: makes the fsetpos function comply with POSIX standard 2026-01-15 02:22:46 +08:00
lib_ftell.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_ftello.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_fwrite.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_getc.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_getchar.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_getdelim.c libc/stdio: allocate a buffer in getdelim() when *lineptr is NULL 2026-09-23 12:52:09 +08:00
lib_gets.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_gets_s.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_getwc.c style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
lib_libdgets.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_libfflush.c !include/fcntl.h: align open flags with Linux values 2026-06-30 13:43:44 +08:00
lib_libfgets.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
lib_libfilelock.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_libflushall.c !include/fcntl.h: align open flags with Linux values 2026-06-30 13:43:44 +08:00
lib_libfread_unlocked.c !include/fcntl.h: align open flags with Linux values 2026-06-30 13:43:44 +08:00
lib_libfwrite.c !include/fcntl.h: align open flags with Linux values 2026-06-30 13:43:44 +08:00
lib_libgetstreams.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_open_memstream.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_perror.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_printf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_putc.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_putchar.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_puts.c libc/puts: newline was omitted for empty string 2024-12-01 17:58:06 +08:00
lib_putwc.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_putwchar.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_rdflush_unlocked.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_remove.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_renameat.c Use lib_get_pathbuffer instead of stack variables 2024-11-12 17:21:42 +08:00
lib_rewind.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_scanf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_setbuf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_setbuffer.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_setvbuf.c style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
lib_snprintf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_sprintf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_sscanf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_tempnam.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_tmpfile.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_tmpnam.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_ungetc.c !include/fcntl.h: align open flags with Linux values 2026-06-30 13:43:44 +08:00
lib_ungetwc.c !include/fcntl.h: align open flags with Linux values 2026-06-30 13:43:44 +08:00
lib_vasprintf.c libc: add nx_strdup() & nx_strndup() support 2024-10-15 01:16:48 +08:00
lib_vdprintf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_vfprintf.c comments: update text typo pre-empted to preempted 2025-05-12 15:01:37 +08:00
lib_vfscanf.c comments: update text typo pre-empted to preempted 2025-05-12 15:01:37 +08:00
lib_vprintf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_vscanf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_vsnprintf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_vsprintf.c libs/libc: migrate to SPDX identifier 2024-10-01 12:25:52 +08:00
lib_vsscanf.c stream_getc: use lib_stream_eof instead of EOF 2024-11-26 10:25:36 +08:00
lib_wrflush_unlocked.c !include/fcntl.h: align open flags with Linux values 2026-06-30 13:43:44 +08:00
Make.defs libc: Move stream printf/scanf from libc/stdio to libc/stream 2025-06-18 09:24:38 +08:00