qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 08/21] qcow2: More helpers for refcount modifica


From: Max Reitz
Subject: Re: [Qemu-devel] [PATCH 08/21] qcow2: More helpers for refcount modification
Date: Tue, 11 Nov 2014 09:42:03 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0

On 2014-11-11 at 01:29, Eric Blake wrote:
On 11/10/2014 06:45 AM, Max Reitz wrote:
Add helper functions for getting and setting refcounts in a refcount
array for any possible refcount order, and choose the correct one during
refcount initialization.

Signed-off-by: Max Reitz <address@hidden>
---
  block/qcow2-refcount.c | 143 ++++++++++++++++++++++++++++++++++++++++++++++++-
  1 file changed, 141 insertions(+), 2 deletions(-)

+
+static uint64_t get_refcount_ro6(const void *refcount_array, uint64_t index)
+{
+    return be64_to_cpu(((const uint64_t *)refcount_array)[index]);
+}
Should this return int64_t and error out if the user ever exceeded 2**63
via image fuzzing?

I don't know. It's nice that these helper functions cannot return an error and thus we don't have to check for a error. I think checking that the value didn't overflow in qcow2_get_refcount() should be sufficient and relieves the other callers (mainly the image check for its in-memory refcount table/array) which know that the value cannot overflow from error checking.

Although I did forget an overflow check after the call to get_refcount() in update_refcount_discard().

+
+static void set_refcount_ro6(void *refcount_array, uint64_t index,
+                             uint64_t value)
+{
+    ((uint64_t *)refcount_array)[index] = cpu_to_be64(value);
+}
Should this assert that value <= INT64_MAX, since that's what the rest
of the code caps it to?

Yes, that it should most certainly do.

Max



reply via email to

[Prev in Thread] Current Thread [Next in Thread]