diff options
author | Alexander Graf <agraf@suse.de> | 2012-12-12 19:11:30 +0100 |
---|---|---|
committer | Yury Usishchev <y.usishchev@samsung.com> | 2014-12-10 14:51:41 +0300 |
commit | 95a92f0f810dc800b2ff1e2ab8d986415a5d1e3e (patch) | |
tree | d67fbb5cab78d232f0971d0f43ae44fc89c2f23a | |
parent | e2a1e163818a9e8349831a3d84f1c752eec2dd1e (diff) | |
download | qemu-95a92f0f810dc800b2ff1e2ab8d986415a5d1e3e.tar.gz qemu-95a92f0f810dc800b2ff1e2ab8d986415a5d1e3e.tar.bz2 qemu-95a92f0f810dc800b2ff1e2ab8d986415a5d1e3e.zip |
Legacy Patch kvm-qemu-preXX-dictzip3.patch
-rw-r--r-- | block/tar.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/block/tar.c b/block/tar.c index 2f42d20ab..6855a1adf 100644 --- a/block/tar.c +++ b/block/tar.c @@ -83,7 +83,8 @@ static int str_ends(char *str, const char *end) return !strncmp(str + str_len - end_len, end, end_len); } -static int is_target_file(BlockDriverState *bs, char *filename) +static int is_target_file(BlockDriverState *bs, char *filename, + char *header) { int retval = 0; @@ -99,10 +100,17 @@ static int is_target_file(BlockDriverState *bs, char *filename) if (str_ends(filename, ".vmdk")) retval = 1; + if (retval && + (header[OFFS_TYPE] != '0') && + (header[OFFS_TYPE] != 'S')) { + retval = 0; + } + dprintf("does filename %s match? %s\n", filename, retval ? "yes" : "no"); /* make sure we're not using this name again */ filename[0] = '\0'; + return retval; } @@ -229,12 +237,13 @@ static int tar_open(BlockDriverState *bs, QDict *options, int flags, Error **err bdrv_pread(s->hd, header_offs - s->file_len, s->longfile, sizeof(s->longfile)); s->longfile[sizeof(s->longfile)-1] = '\0'; + real_file = header; } else if (s->longfile[0]) { real_file = s->longfile; } else { real_file = header; } - } while(!is_target_file(bs, real_file)); + } while(!is_target_file(bs, real_file, header)); /* We found an image! */ |