Am 10.07.2017 um 15:29 hat Peter Lieven geschrieben: > Am 10.07.2017 um 15:25 schrieb Kevin Wolf: > >Am 29.06.2017 um 12:57 hat Peter Lieven geschrieben: > >>we now read the extension on open and write it on update, but > >>do not yet use it. > >> > >>Signed-off-by: Peter Lieven <p...@kamp.de> > >>--- > >> block/qcow2.c | 100 > >> ++++++++++++++++++++++++++++++++++++++++++++++++++-------- > >> block/qcow2.h | 23 +++++++++++--- > >> 2 files changed, 104 insertions(+), 19 deletions(-) > >> > >>diff --git a/block/qcow2.c b/block/qcow2.c > >>index 308121a..39a8afc 100644 > >>--- a/block/qcow2.c > >>+++ b/block/qcow2.c > >>@@ -63,6 +63,7 @@ typedef struct { > >> #define QCOW2_EXT_MAGIC_END 0 > >> #define QCOW2_EXT_MAGIC_BACKING_FORMAT 0xE2792ACA > >> #define QCOW2_EXT_MAGIC_FEATURE_TABLE 0x6803f857 > >>+#define QCOW2_EXT_MAGIC_COMPRESS_FORMAT 0xC03183A3 > >> static int qcow2_probe(const uint8_t *buf, int buf_size, const char > >> *filename) > >> { > >>@@ -76,6 +77,26 @@ static int qcow2_probe(const uint8_t *buf, int buf_size, > >>const char *filename) > >> return 0; > >> } > >>+static int qcow2_compress_format_from_name(char *fmt) > >>+{ > >>+ if (!fmt || !fmt[0]) { > >>+ return QCOW2_COMPRESS_ZLIB_COMPAT; > >>+ } else if (g_str_equal(fmt, "zlib")) { > >>+ return QCOW2_COMPRESS_ZLIB; > >>+ } else { > >>+ return -EINVAL; > >>+ } > >>+} > >It might make sense to allow specifying the old compression format in > >the compression header. But I'm not so sure about using the empty string > >rather than a proper name for it, and even less about not documenting > >it. > > The old format is used if and only if the compression header is absent. > It makes no sense to write a header and use the old format. The old > settings are suboptimal and old versions can't open a qcow2 with a > compression header anyway.
Your code allows an empty string in the header extension. If you don't want it there, you need to reject it. Kevin