dmx: Clean up some argument parsing code

This threw:

../hw/dmx/input/dmxarg.c: In function ‘dmxArgParse’:
../hw/dmx/input/dmxarg.c:128:5: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
     strncpy(tmp, string, len);
     ^~~~~~~~~~~~~~~~~~~~~~~~~
../hw/dmx/input/dmxarg.c:126:11: note: length computed here
     len = strlen(string) + 2;
           ^~~~~~~~~~~~~~

This code predates xstrtokenize, but that's no excuse.

Signed-off-by: Adam Jackson <ajax@redhat.com>
Acked-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
Adam Jackson 2018-04-05 12:45:51 -04:00
parent be99072a1a
commit 176f26e96a
1 changed files with 5 additions and 18 deletions

View File

@ -114,30 +114,17 @@ dmxArgC(dmxArg a)
dmxArg
dmxArgParse(const char *string)
{
char *tmp;
char *start, *pt;
int i = 0;
dmxArg a = dmxArgCreate();
int done;
int len;
if (!string)
return a;
len = strlen(string) + 2;
tmp = malloc(len);
strncpy(tmp, string, len);
a->argv = (const char **)xstrtokenize(string, ",");
if (a->argv)
for (i = 0; a->argv[i] != NULL; i++);
a->argc = i;
for (start = pt = tmp, done = 0; !done && *pt; start = ++pt) {
for (; *pt && *pt != ','; pt++);
if (!*pt)
done = 1;
*pt = '\0';
dmxArgAdd(a, start);
}
if (!done)
dmxArgAdd(a, ""); /* Final comma */
free(tmp);
return a;
}