UPSTREAM: 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

BUG=None
BRANCH=None
TEST=None

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>

Change-Id: I49925040d951dffb9c11425334674d8d498821f1
Reviewed-on: https://chromium-review.googlesource.com/383692
Commit-Ready: Furquan Shaikh <furquan@chromium.org>
Tested-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
Jeremy Compostella 2016-09-07 14:09:34 +02:00 committed by chrome-bot
parent 521d3eb9c2
commit 570b248381

View file

@ -609,11 +609,15 @@ char* strtok_r(char *str, const char *delim, char **ptr)
/* skip over prefix delimiters */
char *start = str + strspn(str, delim);
if (start[0] == '\0')
return NULL;
/* find first delimiter character */
char *end = start + strcspn(start, delim);
end[0] = '\0';
*ptr = end;
if (end[0] != '\0')
*(*ptr)++ = '\0';
*ptr = end+1;
return start;
}