From 7f3085751940a0a6f333bfa8d2ab528303d47406 Mon Sep 17 00:00:00 2001 From: Mira Limbeck Date: Fri, 18 Feb 2022 09:58:26 +0100 Subject: [PATCH] fix #3894: cast 'size' and 'used' to integer Perl's automatic conversion can lead to integers being converted to strings, for example by matching it in a regex. To make sure we always return an integer in the API call, add an explicit cast to integer. Signed-off-by: Mira Limbeck Reviewed-by: Fabian Ebner --- PVE/API2/Storage/Content.pm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/PVE/API2/Storage/Content.pm b/PVE/API2/Storage/Content.pm index 45b8de8..8ff858d 100644 --- a/PVE/API2/Storage/Content.pm +++ b/PVE/API2/Storage/Content.pm @@ -139,7 +139,9 @@ __PACKAGE__->register_method ({ foreach my $item (@$vollist) { eval { PVE::Storage::check_volume_access($rpcenv, $authuser, $cfg, undef, $item->{volid}); }; next if $@; - $item->{vmid} = int($item->{vmid}) if (defined($item->{vmid})); + $item->{vmid} = int($item->{vmid}) if defined($item->{vmid}); + $item->{size} = int($item->{size}) if defined($item->{size}); + $item->{used} = int($item->{used}) if defined($item->{used}); push @$res, $item; } @@ -326,8 +328,8 @@ __PACKAGE__->register_method ({ my $entry = { path => $path, - size => $size, - used => $used, + size => int($size), # cast to integer in case it was changed to a string previously + used => int($used), format => $format, };