From 0cc9d996ed3fe49b34fdf0943523e880203e5be5 Mon Sep 17 00:00:00 2001 From: Denys Nykula Date: Fri, 11 Oct 2019 19:09:15 +0300 Subject: Fix argless find segfault. Inline array becomes garbage outside the if. --- toys/posix/find.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'toys/posix/find.c') diff --git a/toys/posix/find.c b/toys/posix/find.c index 98f18eec..433ea5bd 100644 --- a/toys/posix/find.c +++ b/toys/posix/find.c @@ -681,7 +681,7 @@ error: void find_main(void) { int i, len; - char **ss = toys.optargs; + char **ss = toys.optargs, **dotifnopaths = (char *[]){"."}; TT.topdir = -1; TT.max_bytes = sysconf(_SC_ARG_MAX) - environ_bytes(); @@ -691,11 +691,7 @@ void find_main(void) if (strchr("-!(", *toys.optargs[len])) break; TT.filter = toys.optargs+len; - // use "." if no paths - if (!len) { - ss = (char *[]){"."}; - len = 1; - } + if (!len) ss = dotifnopaths, len = 1; // first pass argument parsing, verify args match up, handle "evaluate once" TT.now = time(0); -- cgit v1.2.3