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:
Jeremy Compostella 2016-09-07 14:09:34 +02:00 committed by Stefan Reinauer
parent 7e516fbb47
commit 3ab8ce52f9
1 changed files with 6 additions and 2 deletions

View File

@ -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;
} }