diff options
author | Jeremy Compostella <jeremy.compostella@intel.com> | 2016-09-07 14:09:34 +0200 |
---|---|---|
committer | Stefan Reinauer <stefan.reinauer@coreboot.org> | 2016-09-08 21:11:34 +0200 |
commit | 3ab8ce52f9c1ab921175aa930f6b8fe91b78e62b (patch) | |
tree | 989744c1631d8024804b89a6d023e39462cfd57b /payloads/libpayload | |
parent | 7e516fbb47daf2affc72135db68f2c9bd8b97dd5 (diff) |
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>
Diffstat (limited to 'payloads/libpayload')
-rw-r--r-- | payloads/libpayload/libc/string.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/payloads/libpayload/libc/string.c b/payloads/libpayload/libc/string.c index 99857493c0..a58efde135 100644 --- a/payloads/libpayload/libc/string.c +++ b/payloads/libpayload/libc/string.c @@ -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; } |