Message ID | 20201106140504.25488-1-jgross@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | tools/libs/light: correct bitmap operations | expand |
On 06.11.2020 15:05, Juergen Gross wrote: > Libxl bitmap operations for single bits (test, set, reset) take the bit > number as a signed integer without testing the value to be larger than > 0. > > Correct that by adding the appropriate tests. > > Signed-off-by: Juergen Gross <jgross@suse.com> Wouldn't it be better to convert the parameter types to unsigned int? Jan
On 06.11.20 15:35, Jan Beulich wrote: > On 06.11.2020 15:05, Juergen Gross wrote: >> Libxl bitmap operations for single bits (test, set, reset) take the bit >> number as a signed integer without testing the value to be larger than >> 0. >> >> Correct that by adding the appropriate tests. >> >> Signed-off-by: Juergen Gross <jgross@suse.com> > > Wouldn't it be better to convert the parameter types to unsigned int? Those are official library interfaces. Can we just change them? Juergen
On 06/11/2020 14:35, Jan Beulich wrote: > On 06.11.2020 15:05, Juergen Gross wrote: >> Libxl bitmap operations for single bits (test, set, reset) take the bit >> number as a signed integer without testing the value to be larger than >> 0. >> >> Correct that by adding the appropriate tests. >> >> Signed-off-by: Juergen Gross <jgross@suse.com> > Wouldn't it be better to convert the parameter types to unsigned int? Yes, except their in the API, so immutable. (whether they should be in the API is a different question...) ~Andrew
On 06.11.2020 15:36, Jürgen Groß wrote: > On 06.11.20 15:35, Jan Beulich wrote: >> On 06.11.2020 15:05, Juergen Gross wrote: >>> Libxl bitmap operations for single bits (test, set, reset) take the bit >>> number as a signed integer without testing the value to be larger than >>> 0. >>> >>> Correct that by adding the appropriate tests. >>> >>> Signed-off-by: Juergen Gross <jgross@suse.com> >> >> Wouldn't it be better to convert the parameter types to unsigned int? > > Those are official library interfaces. Can we just change them? Oh, I didn't expect such helpers to be available to users of the library. Jan
On Fri, Nov 06, 2020 at 03:05:04PM +0100, Juergen Gross wrote: > Libxl bitmap operations for single bits (test, set, reset) take the bit > number as a signed integer without testing the value to be larger than > 0. > > Correct that by adding the appropriate tests. > > Signed-off-by: Juergen Gross <jgross@suse.com> Acked-by: Wei Liu <wl@xen.org>
diff --git a/tools/libs/light/libxl_utils.c b/tools/libs/light/libxl_utils.c index b039143b8a..4699c4a0a3 100644 --- a/tools/libs/light/libxl_utils.c +++ b/tools/libs/light/libxl_utils.c @@ -688,21 +688,21 @@ int libxl_bitmap_is_empty(const libxl_bitmap *bitmap) int libxl_bitmap_test(const libxl_bitmap *bitmap, int bit) { - if (bit >= bitmap->size * 8) + if (bit >= bitmap->size * 8 || bit < 0) return 0; return (bitmap->map[bit / 8] & (1 << (bit & 7))) ? 1 : 0; } void libxl_bitmap_set(libxl_bitmap *bitmap, int bit) { - if (bit >= bitmap->size * 8) + if (bit >= bitmap->size * 8 || bit < 0) return; bitmap->map[bit / 8] |= 1 << (bit & 7); } void libxl_bitmap_reset(libxl_bitmap *bitmap, int bit) { - if (bit >= bitmap->size * 8) + if (bit >= bitmap->size * 8 || bit < 0) return; bitmap->map[bit / 8] &= ~(1 << (bit & 7)); }
Libxl bitmap operations for single bits (test, set, reset) take the bit number as a signed integer without testing the value to be larger than 0. Correct that by adding the appropriate tests. Signed-off-by: Juergen Gross <jgross@suse.com> --- tools/libs/light/libxl_utils.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)