On Tue, Jan 06, 2015 at 06:48:03PM +0100, Peter Wu wrote: > Hi, > > This is the second revision of improvements to DMG image file support. > See [1] for an overview of the previous patchset. > > Thanks to John Snow for his efforts in reviewing patches and providing > suggestions. The errp suggestion from Stefan Hajnoczi is also > incorporated. > > An overview of changes since v1 (also mentioned in each patch): > > block/dmg: properly detect the UDIF trailer [+R-b, set errp) > block/dmg: extract mish block decoding functionality [+R-b, added > comments, expanded commit message, renamed var] > block/dmg: extract processing of resource forks [see patch] > block/dmg: process a buffer instead of reading ints [+R-b, no changes] > block/dmg: validate chunk size to avoid overflow [added offset check] > block/dmg: process XML plists [added offset check] > block/dmg: set virtual size to a non-zero value [fix commit message] > block/dmg: fix sector data offset calculation [use data provided by file] > block/dmg: use SectorNumber from BLKX header [new patch] > block/dmg: factor out block type check [extracted from bzip patch] > block/dmg: support bzip2 block entry types [set/use BZIP2_LIBS] > block/dmg: improve zeroes handling [no changes] > > (the other length checking patch was squashed into the others) > > Note: in the previous patches I mentioned that dmg2img would result in a > shorter file than qemu-img convert. That turns out to be a bug in > dmg2img for which a patch is available[2]. > > A quick test runner is available at > https://lekensteyn.nl/files/dmg-tests/. This script depends on the fixed > dmg2img program and can then be run as follows: > > QEMU_IMG=/tmp/qout/qemu-img ./run-dmg-tests.sh dmg-images/*.dmg > > You will first need some DMG files, I have collected four different > public examples with different properties[1]. These can be found in > urls.txt at https://lekensteyn.nl/files/dmg-tests/dmg-images/. > > Kind regards, > Peter > > [1]: https://lists.nongnu.org/archive/html/qemu-devel/2014-12/msg03606.html > [2]: > https://github.com/Lekensteyn/dmg2img/commit/a1d4861b4b0f2ac5090938233a1156bb130cb3ef > > Peter Wu (12): > block/dmg: properly detect the UDIF trailer > block/dmg: extract mish block decoding functionality > block/dmg: extract processing of resource forks > block/dmg: process a buffer instead of reading ints > block/dmg: validate chunk size to avoid overflow > block/dmg: process XML plists > block/dmg: set virtual size to a non-zero value > block/dmg: fix sector data offset calculation > block/dmg: use SectorNumber from BLKX header > block/dmg: factor out block type check > block/dmg: support bzip2 block entry types > block/dmg: improve zeroes handling > > block/Makefile.objs | 1 + > block/dmg.c | 503 > ++++++++++++++++++++++++++++++++++++++++------------ > configure | 31 ++++ > 3 files changed, 418 insertions(+), 117 deletions(-)
Hard to verify this does not introduce regressions since qemu-iotests does not support dmg. The code looks good though. Thanks, applied to my block tree: https://github.com/stefanha/qemu/commits/block Stefan
pgpq4G036vUmV.pgp
Description: PGP signature