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:
parent
be99072a1a
commit
176f26e96a
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue