[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH for-2.6 12/14] qemu-img: In 'map',
From: |
Fam Zheng |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH for-2.6 12/14] qemu-img: In 'map', use QDict to generate JSON output |
Date: |
Tue, 24 Nov 2015 14:00:32 +0800 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Mon, 11/23 22:42, Eric Blake wrote:
> On 11/23/2015 10:22 PM, Fam Zheng wrote:
> > +++ b/tests/qemu-iotests/122.out
> > @@ -49,12 +49,13 @@ read 65536/65536 bytes at offset 4194304
> > 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> > read 65536/65536 bytes at offset 8388608
> > 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> > -[{ "start": 0, "length": 65536, "depth": 0, "zero": false, "data": true},
> > -{ "start": 65536, "length": 4128768, "depth": 0, "zero": true, "data":
> > false},
> > -{ "start": 4194304, "length": 65536, "depth": 0, "zero": false, "data":
> > true},
> > -{ "start": 4259840, "length": 4128768, "depth": 0, "zero": true, "data":
> > false},
> > -{ "start": 8388608, "length": 65536, "depth": 0, "zero": false, "data":
> > true},
> > -{ "start": 8454144, "length": 4128768, "depth": 0, "zero": true, "data":
> > false}]
> > +[{"length": 65536, "start": 0, "zero": false, "depth": 0, "data": true}
>
> ...but the output shows that QDict output is tied to internal hashing
> and therefore different than first-in-first-out creation order.
> JSON-wise, it's still valid. But are we guaranteed that our hashing is
> stable? If so, is that something an attacker could attempt to exploit
> as a Denial of Service, by intentionally creating predictable
> collisions? [I'm guessing not, as the denial of service is mainly an
> issue if a user can degrade performance of typical lookups from nominal
> O(1) to O(n) by supplying LOTS of user-provided input, but the keys we
> output in JSON are generally under our control via .json files and not
> something where the user is dynamically creating lots of keys - but
> still worth asking.]
Interesting question.
I think creating a lot of colliding keys is possible, for example by creating a
huge set of options in the same level, or maybe just by providing a large
invalid 'json:' pseudo file name.
I wonder how QMP would handle this, because it also needs to parse json into
QObject.
> And if it is not stable, then will our test break
> when someone else's system hashes differently than yours?
We are using a deterministic hash function in qdict_put_obj, tdb_hash, so this
order is stable.
Fam
- [Qemu-block] [PATCH for-2.6 04/14] raw: Assign bs to file in raw_co_get_block_status, (continued)
- [Qemu-block] [PATCH for-2.6 04/14] raw: Assign bs to file in raw_co_get_block_status, Fam Zheng, 2015/11/24
- [Qemu-block] [PATCH for-2.6 05/14] iscsi: Assign bs to file in iscsi_co_get_block_status, Fam Zheng, 2015/11/24
- [Qemu-block] [PATCH for-2.6 06/14] parallels: Assign bs->file->bs to file in parallels_co_get_block_status, Fam Zheng, 2015/11/24
- [Qemu-block] [PATCH for-2.6 07/14] qed: Assign bs->file->bs to file in bdrv_qed_co_get_block_status, Fam Zheng, 2015/11/24
- [Qemu-block] [PATCH for-2.6 08/14] sheepdog: Assign bs to file in sd_co_get_block_status, Fam Zheng, 2015/11/24
- [Qemu-block] [PATCH for-2.6 09/14] vdi: Assign bs->file->bs to file in vdi_co_get_block_status, Fam Zheng, 2015/11/24
- [Qemu-block] [PATCH for-2.6 10/14] vpc: Assign bs->file->bs to file in vpc_co_get_block_status, Fam Zheng, 2015/11/24
- [Qemu-block] [PATCH for-2.6 11/14] vmdk: Return extent's file in bdrv_get_block_status, Fam Zheng, 2015/11/24
- [Qemu-block] [PATCH for-2.6 12/14] qemu-img: In 'map', use QDict to generate JSON output, Fam Zheng, 2015/11/24
- Re: [Qemu-block] [Qemu-devel] [PATCH for-2.6 12/14] qemu-img: In 'map', use QDict to generate JSON output, Eric Blake, 2015/11/24
- Re: [Qemu-block] [Qemu-devel] [PATCH for-2.6 12/14] qemu-img: In 'map', use QDict to generate JSON output,
Fam Zheng <=
- Re: [Qemu-block] [PATCH for-2.6 12/14] qemu-img: In 'map', use QDict to generate JSON output, Paolo Bonzini, 2015/11/24
- Re: [Qemu-block] [Qemu-devel] [PATCH for-2.6 12/14] qemu-img: In 'map', use QDict to generate JSON output, Markus Armbruster, 2015/11/24
- Re: [Qemu-block] [Qemu-devel] [PATCH for-2.6 12/14] qemu-img: In 'map', use QDict to generate JSON output, Fam Zheng, 2015/11/24
- Re: [Qemu-block] [Qemu-devel] [PATCH for-2.6 12/14] qemu-img: In 'map', use QDict to generate JSON output, Fam Zheng, 2015/11/24
- Re: [Qemu-block] [Qemu-devel] [PATCH for-2.6 12/14] qemu-img: In 'map', use QDict to generate JSON output, Paolo Bonzini, 2015/11/24
[Qemu-block] [PATCH for-2.6 13/14] qemu-img: In "map" output, support external file name, Fam Zheng, 2015/11/24
[Qemu-block] [PATCH for-2.6 14/14] iotests: Add "qemu-img map" test for VMDK extents, Fam Zheng, 2015/11/24