libpayload: Fix strtok_r
This patch makes strtok_r: - handle the end of the string - handle string that contains only delimiters - do not set ptr outside of str Change-Id: I49925040d951dffb9c11425334674d8d498821f1 Signed-off-by: Jeremy Compostella <jeremy.compostella@gmail.com> Reviewed-on: https://review.coreboot.org/16524 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
parent
7e516fbb47
commit
3ab8ce52f9
|
@ -609,11 +609,15 @@ char* strtok_r(char *str, const char *delim, char **ptr)
|
||||||
/* skip over prefix delimiters */
|
/* skip over prefix delimiters */
|
||||||
char *start = str + strspn(str, delim);
|
char *start = str + strspn(str, delim);
|
||||||
|
|
||||||
|
if (start[0] == '\0')
|
||||||
|
return NULL;
|
||||||
|
|
||||||
/* find first delimiter character */
|
/* find first delimiter character */
|
||||||
char *end = start + strcspn(start, delim);
|
char *end = start + strcspn(start, delim);
|
||||||
end[0] = '\0';
|
*ptr = end;
|
||||||
|
if (end[0] != '\0')
|
||||||
|
*(*ptr)++ = '\0';
|
||||||
|
|
||||||
*ptr = end+1;
|
|
||||||
return start;
|
return start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue