From 45ee6002399109a1c75afbe03b6de43e862e9c7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Mon, 18 Dec 2023 16:19:07 -0500 Subject: [PATCH] remove ugly `sizeof(DEV_FD) - 1` --- libc/calls/getprogramexecutablename.greg.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libc/calls/getprogramexecutablename.greg.c b/libc/calls/getprogramexecutablename.greg.c index 92fef8aaa..43f20bcb9 100644 --- a/libc/calls/getprogramexecutablename.greg.c +++ b/libc/calls/getprogramexecutablename.greg.c @@ -39,6 +39,7 @@ #define KERN_PROC_PATHNAME_FREEBSD 12 #define KERN_PROC_PATHNAME_NETBSD 5 #define DEV_FD "/dev/fd/" +#define STRLEN_DEV_FD (sizeof(DEV_FD) - 1) static struct { atomic_uint once; @@ -144,10 +145,10 @@ static inline void InitProgramExecutableNameImpl(void) { empty string to obviate the TOCTOU problem between loader and binary. */ if ((!IsNetbsd() && !IsOpenbsd() && !IsXnu()) /* any others? */ || - 0 != strncmp(DEV_FD, __program_executable_name, sizeof(DEV_FD) - 1) || - !__program_executable_name[sizeof(DEV_FD) - 1] || - __program_executable_name[sizeof(DEV_FD) - 1] == '.' || - strchr(__program_executable_name + sizeof(DEV_FD) - 1, '/')) { + 0 != strncmp(DEV_FD, __program_executable_name, STRLEN_DEV_FD) || + !__program_executable_name[STRLEN_DEV_FD] || + __program_executable_name[STRLEN_DEV_FD] == '.' || + strchr(__program_executable_name + STRLEN_DEV_FD, '/')) { goto UseEmpty; } }