*(s + 1) = '\0';
}
-static int check_range_bytes(char *str, unsigned long *val)
+static int check_range_bytes(const char *str, unsigned long *val)
{
char suffix;
*cp = strdup(ptr);
break;
case FIO_OPT_RANGE: {
+ char tmp[128];
char *p1, *p2;
- p1 = strchr(ptr, '-');
+ strncpy(tmp, ptr, sizeof(tmp) - 1);
+
+ p1 = strchr(tmp, '-');
if (!p1) {
ret = 1;
break;
p2 = p1 + 1;
*p1 = '\0';
- p1 = ptr;
+ p1 = tmp;
ret = 1;
if (!check_range_bytes(p1, &ul1) && !check_range_bytes(p2, &ul2)) {
return 1;
}
- return handle_option(o, val, data);
+ if (!handle_option(o, val, data))
+ return 0;
+
+ fprintf(stderr, "fio: failed parsing %s=%s\n", opt, val);
+ return 1;
}
int parse_option(const char *opt, struct fio_option *options, void *data)
char *pre, *post;
char tmp[64];
- strcpy(tmp, opt);
+ strncpy(tmp, opt, sizeof(tmp) - 1);
pre = strchr(tmp, '=');
if (pre) {
return 1;
}
- return handle_option(o, post, data);
+ if (!handle_option(o, post, data))
+ return 0;
+
+ fprintf(stderr, "fio: failed parsing %s\n", opt);
+ return 1;
}