summaryrefslogtreecommitdiff
path: root/payloads/libpayload
diff options
context:
space:
mode:
authorJeremy Compostella <jeremy.compostella@intel.com>2016-09-07 14:09:34 +0200
committerStefan Reinauer <stefan.reinauer@coreboot.org>2016-09-08 21:11:34 +0200
commit3ab8ce52f9c1ab921175aa930f6b8fe91b78e62b (patch)
tree989744c1631d8024804b89a6d023e39462cfd57b /payloads/libpayload
parent7e516fbb47daf2affc72135db68f2c9bd8b97dd5 (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.c8
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;
}