[pve-devel] [PATCH v2 storage 2/2] file_size_info: cast 'size' and 'used' to integer
Fabian Ebner
f.ebner at proxmox.com
Fri Feb 18 08:36:03 CET 2022
Am 17.02.22 um 15:54 schrieb Mira Limbeck:
> `qemu-img info --output=json` returns the size and used values as integers in
> the JSON format, but the regex match converts them to strings.
> As we know they only contain digits, we can simply cast them back to integers
> after the regex.
>
> The API requires them to be integers.
>
> Signed-off-by: Mira Limbeck <m.limbeck at proxmox.com>
> ---
> v2:
> - reworded commit subject and message
>
> PVE/Storage/Plugin.pm | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm
> index 12f1b4b..bcc0cc0 100644
> --- a/PVE/Storage/Plugin.pm
> +++ b/PVE/Storage/Plugin.pm
> @@ -892,7 +892,13 @@ sub file_size_info {
> my ($size, $format, $used, $parent) = $info->@{qw(virtual-size format actual-size backing-filename)};
>
> ($size) = ($size =~ /^(\d+)$/) or die "size '$size' not an integer\n"; # untaint
> + # the regex above changes the type of $size to 'string'
> + # we know it is an integer based on the regex above, so simply cast it back
> + # this is required by the API
Nit: Not sure if it's worth to put such a lengthy comment rather than
something like "coerce back from string". One can still read the commit
message in the git history if there ever is confusion about why it's there.
> + $size = int($size);
> ($used) = ($used =~ /^(\d+)$/) or die "used '$used' not an integer\n"; # untaint
> + # same as $size above
> + $used = int($used);
> ($format) = ($format =~ /^(\S+)$/) or die "format '$format' includes whitespace\n"; # untaint
> if (defined($parent)) {
> ($parent) = ($parent =~ /^(\S+)$/) or die "parent '$parent' includes whitespace\n"; # untaint
More information about the pve-devel
mailing list