mirror of
https://github.com/qemu/qemu.git
synced 2025-07-28 22:23:42 +00:00
qemu-img: Wrap cvtnum() around qemu_strtosz()
Cc: Kevin Wolf <kwolf@redhat.com> Cc: Max Reitz <mreitz@redhat.com> Cc: qemu-block@nongnu.org Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <1487708048-2131-21-git-send-email-armbru@redhat.com>
This commit is contained in:
parent
dab9cc9237
commit
606caa0a2a
58
qemu-img.c
58
qemu-img.c
@ -368,6 +368,19 @@ static int add_old_style_options(const char *fmt, QemuOpts *opts,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int64_t cvtnum(const char *s)
|
||||||
|
{
|
||||||
|
char *end;
|
||||||
|
int64_t ret;
|
||||||
|
|
||||||
|
ret = qemu_strtosz(s, &end);
|
||||||
|
if (*end != '\0') {
|
||||||
|
/* Detritus at the end of the string */
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int img_create(int argc, char **argv)
|
static int img_create(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
@ -461,9 +474,9 @@ static int img_create(int argc, char **argv)
|
|||||||
/* Get image size, if specified */
|
/* Get image size, if specified */
|
||||||
if (optind < argc) {
|
if (optind < argc) {
|
||||||
int64_t sval;
|
int64_t sval;
|
||||||
char *end;
|
|
||||||
sval = qemu_strtosz(argv[optind++], &end);
|
sval = cvtnum(argv[optind++]);
|
||||||
if (sval < 0 || *end) {
|
if (sval < 0) {
|
||||||
if (sval == -ERANGE) {
|
if (sval == -ERANGE) {
|
||||||
error_report("Image size must be less than 8 EiB!");
|
error_report("Image size must be less than 8 EiB!");
|
||||||
} else {
|
} else {
|
||||||
@ -1863,9 +1876,9 @@ static int img_convert(int argc, char **argv)
|
|||||||
case 'S':
|
case 'S':
|
||||||
{
|
{
|
||||||
int64_t sval;
|
int64_t sval;
|
||||||
char *end;
|
|
||||||
sval = qemu_strtosz(optarg, &end);
|
sval = cvtnum(optarg);
|
||||||
if (sval < 0 || *end) {
|
if (sval < 0) {
|
||||||
error_report("Invalid minimum zero buffer size for sparse output specified");
|
error_report("Invalid minimum zero buffer size for sparse output specified");
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto fail_getopt;
|
goto fail_getopt;
|
||||||
@ -3650,10 +3663,8 @@ static int img_bench(int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
{
|
{
|
||||||
char *end;
|
offset = cvtnum(optarg);
|
||||||
errno = 0;
|
if (offset < 0) {
|
||||||
offset = qemu_strtosz(optarg, &end);
|
|
||||||
if (offset < 0|| *end) {
|
|
||||||
error_report("Invalid offset specified");
|
error_report("Invalid offset specified");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -3666,10 +3677,9 @@ static int img_bench(int argc, char **argv)
|
|||||||
case 's':
|
case 's':
|
||||||
{
|
{
|
||||||
int64_t sval;
|
int64_t sval;
|
||||||
char *end;
|
|
||||||
|
|
||||||
sval = qemu_strtosz(optarg, &end);
|
sval = cvtnum(optarg);
|
||||||
if (sval < 0 || sval > INT_MAX || *end) {
|
if (sval < 0 || sval > INT_MAX) {
|
||||||
error_report("Invalid buffer size specified");
|
error_report("Invalid buffer size specified");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -3680,10 +3690,9 @@ static int img_bench(int argc, char **argv)
|
|||||||
case 'S':
|
case 'S':
|
||||||
{
|
{
|
||||||
int64_t sval;
|
int64_t sval;
|
||||||
char *end;
|
|
||||||
|
|
||||||
sval = qemu_strtosz(optarg, &end);
|
sval = cvtnum(optarg);
|
||||||
if (sval < 0 || sval > INT_MAX || *end) {
|
if (sval < 0 || sval > INT_MAX) {
|
||||||
error_report("Invalid step size specified");
|
error_report("Invalid step size specified");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -3842,12 +3851,11 @@ static int img_dd_bs(const char *arg,
|
|||||||
struct DdIo *in, struct DdIo *out,
|
struct DdIo *in, struct DdIo *out,
|
||||||
struct DdInfo *dd)
|
struct DdInfo *dd)
|
||||||
{
|
{
|
||||||
char *end;
|
|
||||||
int64_t res;
|
int64_t res;
|
||||||
|
|
||||||
res = qemu_strtosz(arg, &end);
|
res = cvtnum(arg);
|
||||||
|
|
||||||
if (res <= 0 || res > INT_MAX || *end) {
|
if (res <= 0 || res > INT_MAX) {
|
||||||
error_report("invalid number: '%s'", arg);
|
error_report("invalid number: '%s'", arg);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -3860,11 +3868,9 @@ static int img_dd_count(const char *arg,
|
|||||||
struct DdIo *in, struct DdIo *out,
|
struct DdIo *in, struct DdIo *out,
|
||||||
struct DdInfo *dd)
|
struct DdInfo *dd)
|
||||||
{
|
{
|
||||||
char *end;
|
dd->count = cvtnum(arg);
|
||||||
|
|
||||||
dd->count = qemu_strtosz(arg, &end);
|
if (dd->count < 0) {
|
||||||
|
|
||||||
if (dd->count < 0 || *end) {
|
|
||||||
error_report("invalid number: '%s'", arg);
|
error_report("invalid number: '%s'", arg);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -3894,11 +3900,9 @@ static int img_dd_skip(const char *arg,
|
|||||||
struct DdIo *in, struct DdIo *out,
|
struct DdIo *in, struct DdIo *out,
|
||||||
struct DdInfo *dd)
|
struct DdInfo *dd)
|
||||||
{
|
{
|
||||||
char *end;
|
in->offset = cvtnum(arg);
|
||||||
|
|
||||||
in->offset = qemu_strtosz(arg, &end);
|
if (in->offset < 0) {
|
||||||
|
|
||||||
if (in->offset < 0 || *end) {
|
|
||||||
error_report("invalid number: '%s'", arg);
|
error_report("invalid number: '%s'", arg);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user