Just make sure arg is not NULL in lg_getarg() before accessing. It happens when
input contains an invalid character.

Unrelated but while at it, abort earlier in lg_arg2argv() if there is no
argument available.

Index: bgplg.c
===================================================================
RCS file: /cvs/src/usr.bin/bgplg/bgplg.c,v
retrieving revision 1.19
diff -u -p -r1.19 bgplg.c
--- bgplg.c     5 Mar 2018 10:53:37 -0000       1.19
+++ bgplg.c     25 Oct 2018 18:18:55 -0000
@@ -134,6 +134,9 @@ lg_getarg(const char *name, char *arg, i
        size_t namelen, ptrlen;
        int i;
 
+       if (arg == NULL)
+               return (NULL);
+
        namelen = strlen(name);
 
        for (i = 0; i < len; i++) {
@@ -171,6 +174,9 @@ lg_arg2argv(char *arg, int *argc)
                        c++;
                }
        }
+
+       if (arg[0] == '\0')
+               return (NULL);
 
        /* Generate array */
        if ((argv = calloc(c + 1, sizeof(char *))) == NULL) {

Reply via email to