Signed-off-by: Peter Mamonov <pmamonov@xxxxxxxxx> --- lib/misc.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/misc.c b/lib/misc.c index fc2c45aa4..4b62f8771 100644 --- a/lib/misc.c +++ b/lib/misc.c @@ -79,7 +79,7 @@ EXPORT_SYMBOL(strtoul_suffix); int parse_area_spec(const char *str, loff_t *start, loff_t *size) { char *endp; - loff_t end, _start; + loff_t end, _start, _size; if (!isdigit(*str)) return -1; @@ -90,7 +90,7 @@ int parse_area_spec(const char *str, loff_t *start, loff_t *size) if (!*str) { /* beginning given, but no size, assume maximum size */ - *size = ~0; + _size = ~0; goto success; } @@ -99,12 +99,13 @@ int parse_area_spec(const char *str, loff_t *start, loff_t *size) if (!isdigit(*(str + 1))) return -1; - end = strtoull_suffix(str + 1, NULL, 0); + end = strtoull_suffix(str + 1, &endp, 0); + str = endp; if (end < *start) { printf("end < start\n"); return -1; } - *size = end - *start + 1; + _size = end - *start + 1; goto success; } @@ -113,14 +114,18 @@ int parse_area_spec(const char *str, loff_t *start, loff_t *size) if (!isdigit(*(str + 1))) return -1; - *size = strtoull_suffix(str + 1, NULL, 0); + _size = strtoull_suffix(str + 1, &endp, 0); + str = endp; goto success; } return -1; success: + if (*str && !isspace(*str)) + return -1; *start = _start; + *size = _size; return 0; } EXPORT_SYMBOL(parse_area_spec); -- 2.11.0 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox