[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/2] qemu-img:report size overflow error message
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH 2/2] qemu-img:report size overflow error message |
Date: |
Fri, 14 Dec 2012 13:19:41 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) |
liguang <address@hidden> writes:
> qemu-img will complain when qcow or qcow2
> size overflow for 64 bits, report the right
> message in this condition.
>
> before change:
> qemu-img: Invalid image size specified! You may use k, M, G or T suffixes for
> qemu-img: kilobytes, megabytes, gigabytes and terabytes.
>
> after change:
> qemu-img: Image size must be less than 8 exabytes!
>
> Signed-off-by: liguang <address@hidden>
> ---
> qemu-img.c | 7 ++++++-
> 1 files changed, 6 insertions(+), 1 deletions(-)
>
> diff --git a/qemu-img.c b/qemu-img.c
> index e29e01b..1c3af67 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -346,13 +346,18 @@ static int img_create(int argc, char **argv)
> int64_t sval;
> char *end;
> sval = strtosz_suffix(argv[optind++], &end, STRTOSZ_DEFSUFFIX_B);
> - if (sval < 0 || *end) {
> + if (sval == EINVAL || *end) {
> error_report("Invalid image size specified! You may use k, M, G
> or "
> "T suffixes for ");
> error_report("kilobytes, megabytes, gigabytes and terabytes.");
> ret = -1;
> goto out;
> }
> + if (sval == ERANGE) {
> + error_report("Image size must be less than 8 exabytes!");
> + ret = -1;
> + goto out;
> + }
> img_size = (uint64_t)sval;
> }
If strtosz_suffix() ever acquires additional error codes, this caller
will fail to detect the failure. Try something like
if (sval < 0 || *end) {
if (sval == -ERANGE) {
error_report("Image size must be less than 8 exabytes!");
} else {
error_report("Invalid image size specified!"
" You may use k, M, G or T suffixes for");
error_report("kilobytes, megabytes, gigabytes and terabytes.");
}
ret = -1;
goto out;
}
To be pedantically correct, "8 exabytes" should be "8 Exbibytes" or "8
EiB".