+++ b/libxo/libxo.c
@@ -8104,6 +8104,8 @@ xo_parse_args (int argc, char **argv)
     cp = strrchr(xo_program, '/');
     if (cp)
        xo_program = ++cp;
+    else
+       cp = argv[0];           /* Reset to front of string */

/* GNU tools add an annoying ".test" as the program extension; remove it */
     size_t len = strlen(xo_program);

On 7 Nov 2019, at 10:08, Arnaud Ysmal wrote:

Hi,

I just got the same issue, it happens when argv[0] does not contain a / (calling uptime segfault but calling /usr/bin/uptime works).

In xo_parse_args there is no check whether cp is NULL before calling xo_streq.

I fixed it by changing this line:
-       cp = &cp[len + 1 - sizeof(gnu_ext)];
+ cp = (char *)(uintptr_t)(const char *)(&xo_program[len + 1 - sizeof(gnu_ext)]);

Arnaud Ysmal
_______________________________________________
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to