nuttx/libs/libc/stdio
hujun5 90387a5b41 libc/misc: add fdsan module
FD (file descriptor) is widely used in system software development,
and almost all implementations of posix os (including nuttx) use FD as an index.
the value of fd needs to be allocated starting from the minimum available value of 3, and each process has a copy,
so the same fd value is very easy to reuse in the program.

In multi threaded or multi process environments without address isolation,
If the ownership, global variables, and competition relationships of fd are not properly handled,
there may be issues with fd duplication or accidental closure.
Further leading to the following issues, which are difficult to troubleshoot.

1. Security vulnerability: the fd we wrote is not the expected fd and will be accessed by hackers to obtain data
2. Program exceptions or crashes: write or read fd failures, and program logic errors
3. The structured file XML or database is damaged: the data format written to the database is not the expected format.

The implementation principle of fdsan is based on the implementation of Android
https://android.googlesource.com/platform/bionic/+/master/docs/fdsan.md

Signed-off-by: hujun5 <hujun5@xiaomi.com>
2023-05-17 10:24:42 +08:00
..
Kconfig stdio: Remove CONFIG_EOL_IS_XXX 2023-02-24 00:35:19 +08:00
lib_asprintf.c
lib_clearerr.c
lib_dprintf.c
lib_dtoa_data.c
lib_dtoa_engine.c nuttx: Use MIN/MAX definitions from "sys/param.h" 2023-02-01 23:47:44 +08:00
lib_dtoa_engine.h
lib_fclose.c libc/misc: add fdsan module 2023-05-17 10:24:42 +08:00
lib_feof.c
lib_ferror.c
lib_fflush.c fs/streams: Move the file streams from the group structure into TLS 2022-12-22 20:16:11 +08:00
lib_fgetc.c
lib_fgetpos.c
lib_fgets.c
lib_fileno.c
lib_fopen.c libc/misc: add fdsan module 2023-05-17 10:24:42 +08:00
lib_fprintf.c
lib_fputc.c
lib_fputs.c
lib_fread.c
lib_freopen.c freopen: Added flush of the read buffers. 2022-10-18 23:29:55 +08:00
lib_fscanf.c
lib_fseek.c
lib_fseeko.c
lib_fsetpos.c
lib_ftell.c
lib_ftello.c libc/stdio: Add stdio file locking functions 2022-10-22 23:34:45 +08:00
lib_fwrite.c
lib_getc.c
lib_getchar.c
lib_getdelim.c stdio: Remove CONFIG_EOL_IS_XXX 2023-02-24 00:35:19 +08:00
lib_gets_s.c libc/stdio: Make gets/gets_s work without CONFIG_FILE_STREAM 2023-02-24 10:39:48 +08:00
lib_gets.c libc/stdio: Make gets/gets_s work without CONFIG_FILE_STREAM 2023-02-24 10:39:48 +08:00
lib_libdgets.c libc/stdio: Make gets/gets_s work without CONFIG_FILE_STREAM 2023-02-24 10:39:48 +08:00
lib_libdtoa.c nuttx: Use MIN/MAX definitions from "sys/param.h" 2023-02-01 23:47:44 +08:00
lib_libfflush.c libc/stdio: Add stdio file locking functions 2022-10-22 23:34:45 +08:00
lib_libfgets.c stdio: lib_fgets convert \r\n to \n 2023-02-24 10:39:48 +08:00
lib_libfilelock.c libc/stdio: Add stdio file locking functions 2022-10-22 23:34:45 +08:00
lib_libflushall.c libc/stdio: Remove the one line mutex wrapper 2022-11-09 21:38:10 +01:00
lib_libfread.c libc/stdio: Add stdio file locking functions 2022-10-22 23:34:45 +08:00
lib_libfwrite.c libc/stdio: Add stdio file locking functions 2022-10-22 23:34:45 +08:00
lib_libgetstreams.c libc/stdio: Implement lib_get_stream 2023-03-02 09:56:57 +01:00
lib_libsprintf.c
lib_libstream.c fs/streams: Move the file streams from the group structure into TLS 2022-12-22 20:16:11 +08:00
lib_libvscanf.c libc/stream: Rename [lib_stream_](put|get) to [lib_stream_](putc|getc) 2022-12-05 14:27:55 +01:00
lib_libvsprintf.c libc/libvsprintf: use puts to replace the putc 2023-03-08 16:56:17 +08:00
lib_perror.c
lib_printf.c
lib_putc.c
lib_putchar.c
lib_puts.c libc/stdio: Add stdio file locking functions 2022-10-22 23:34:45 +08:00
lib_rdflush.c libc/stdio: Add stdio file locking functions 2022-10-22 23:34:45 +08:00
lib_remove.c
lib_renameat.c libc: Add a new argument(size_t fulllen) to lib_getfullpath 2023-05-08 09:57:01 +02:00
lib_rewind.c libc/stdio: Add stdio file locking functions 2022-10-22 23:34:45 +08:00
lib_scanf.c
lib_setbuf.c
lib_setbuffer.c libc: Add setbuffer to stdio. 2023-05-01 11:24:41 +03:00
lib_setvbuf.c libc/stdio: Add stdio file locking functions 2022-10-22 23:34:45 +08:00
lib_snprintf.c
lib_sprintf.c
lib_sscanf.c
lib_tempnam.c Fixes in asprintf usage. 2023-04-19 02:48:39 +08:00
lib_tmpfile.c
lib_tmpnam.c
lib_ultoa_invert.c Revert "libc/stdio: enable long long formating by CONFIG_HAVE_LONG_LONG" 2022-07-20 18:06:29 +03:00
lib_ultoa_invert.h Revert "libc/stdio: enable long long formating by CONFIG_HAVE_LONG_LONG" 2022-07-20 18:06:29 +03:00
lib_ungetc.c libs/libc/stdio: fix ungetc operation 2022-10-14 23:29:38 +08:00
lib_vasprintf.c asprintf: Fixed possible memory leak if print fails. 2023-03-28 14:46:07 -03:00
lib_vdprintf.c stdio: Implement simple buffered out stream for vdprintf 2023-03-01 13:08:59 +09:00
lib_vfprintf.c libc/stdio: Add stdio file locking functions 2022-10-22 23:34:45 +08:00
lib_vfscanf.c libc/stdio: Add stdio file locking functions 2022-10-22 23:34:45 +08:00
lib_vprintf.c
lib_vscanf.c
lib_vsnprintf.c
lib_vsprintf.c
lib_vsscanf.c
lib_wrflush.c
Make.defs libc: Add setbuffer to stdio. 2023-05-01 11:24:41 +03:00