From 8f9e448b2ef6db7cd905540c21f3c5b190e7a1e7 Mon Sep 17 00:00:00 2001 From: Kacper Date: Sun, 7 Dec 2025 22:22:16 +0100 Subject: Add bin/true and bin/false implementations - Added assembly implementations for `true` and `false` commands. - Updated Kbuild files to include new binaries. - Removed unused libraries and headers. - Cleaned up makefile and unused code. --- lib/libc/dirent/Kbuild | 6 ++++++ lib/libc/dirent/readdir_r.c | 14 ++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 lib/libc/dirent/Kbuild (limited to 'lib/libc/dirent') diff --git a/lib/libc/dirent/Kbuild b/lib/libc/dirent/Kbuild new file mode 100644 index 00000000..355b905c --- /dev/null +++ b/lib/libc/dirent/Kbuild @@ -0,0 +1,6 @@ +obj-y += closedir.o +obj-y += dirfd.o +obj-y += fdopendir.o +obj-y += opendir.o +obj-y += readdir_r.o +obj-y += readdir.o diff --git a/lib/libc/dirent/readdir_r.c b/lib/libc/dirent/readdir_r.c index 9d8bf49b..98b12426 100644 --- a/lib/libc/dirent/readdir_r.c +++ b/lib/libc/dirent/readdir_r.c @@ -29,9 +29,9 @@ int readdir_r(DIR *restrict dirp, struct dirent *restrict entry, ldir = (void *)(dirp->buffer + dirp->offset); /* Validate buffer bounds */ - if (dirp->offset >= sizeof(dirp->buffer) || - dirp->offset + sizeof(struct linux_dirent64) > - sizeof(dirp->buffer)) { + if (dirp->offset >= (off_t)sizeof(dirp->buffer) || + dirp->offset + (off_t)sizeof(struct linux_dirent64) > + (off_t)sizeof(dirp->buffer)) { dirp->cached = 0; *result = NULL; return 0; @@ -40,7 +40,8 @@ int readdir_r(DIR *restrict dirp, struct dirent *restrict entry, /* Validate record length */ if (ldir->d_reclen < offsetof(struct linux_dirent64, d_name) + 1 || - dirp->offset + ldir->d_reclen > sizeof(dirp->buffer) || + dirp->offset + (off_t)ldir->d_reclen > + (off_t)sizeof(dirp->buffer) || ldir->d_reclen == 0) { dirp->cached = 0; *result = NULL; @@ -90,7 +91,7 @@ int readdir_r(DIR *restrict dirp, struct dirent *restrict entry, nread = ret; /* Validate first entry bounds */ - if (nread < sizeof(struct linux_dirent64) || + if (nread < (ssize_t)sizeof(struct linux_dirent64) || ldir->d_reclen < offsetof(struct linux_dirent64, d_name) + 1 || ldir->d_reclen > nread || ldir->d_reclen == 0) { *result = NULL; @@ -124,7 +125,8 @@ int readdir_r(DIR *restrict dirp, struct dirent *restrict entry, (void *)(dirp->buffer + buffer_offset); /* Validate entry bounds to prevent infinite loops */ - if (buffer_offset + sizeof(struct linux_dirent64) > nread || + if (buffer_offset + (ssize_t)sizeof(struct linux_dirent64) > + nread || next_ldir->d_reclen < offsetof(struct linux_dirent64, d_name) + 1 || buffer_offset + next_ldir->d_reclen > nread || -- cgit v1.2.3