Hello community, here is the log from the commit of package kvm for openSUSE:12.1:Update:Test checked in at 2012-01-25 15:06:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:12.1:Update:Test/kvm (Old) and /work/SRC/openSUSE:12.1:Update:Test/.kvm.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kvm", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:12.1:Update:Test/kvm/kvm.changes 2011-12-19 18:18:23.000000000 +0100 +++ /work/SRC/openSUSE:12.1:Update:Test/.kvm.new/kvm.changes 2012-01-25 15:06:23.000000000 +0100 @@ -1,0 +2,10 @@ +Mon Jan 23 19:15:54 UTC 2012 - [email protected] + +- avoid buffer overflow in e1000 device emulation (bnc#740165) + +------------------------------------------------------------------- +Thu Dec 15 15:46:53 UTC 2011 - [email protected] + +- Fix dictzip with long file names. + +------------------------------------------------------------------- New: ---- kvm-qemu-preXX-dictzip3.patch kvm-qemu-preXX-e1000-check-for-overflow-whenever-issuing-PCI-dma-reads.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kvm.spec ++++++ --- /var/tmp/diff_new_pack.YNc4jj/_old 2012-01-25 15:06:24.000000000 +0100 +++ /var/tmp/diff_new_pack.YNc4jj/_new 2012-01-25 15:06:24.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package kvm # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -144,6 +144,8 @@ Patch110: kvm-qemu-preXX-ccid-Fix-buffer-overrun-in-handling-of-VSC_ATR-message.patch Patch111: kvm-qemu-preXX-scsi-disk-commonize-iovec-creation-between-reads-and.patch Patch112: kvm-qemu-preXX-scsi-disk-lazily-allocate-bounce-buffer.patch +Patch113: kvm-qemu-preXX-dictzip3.patch +Patch114: kvm-qemu-preXX-e1000-check-for-overflow-whenever-issuing-PCI-dma-reads.patch Patch150: qemu-kvm-common-code-fixes-for-s390-build.patch @@ -246,6 +248,8 @@ %patch110 -p1 %patch111 -p1 %patch112 -p1 +%patch113 -p1 +%patch114 -p1 %patch150 -p1 ++++++ kvm-qemu-preXX-dictzip3.patch ++++++ Index: qemu-kvm-0.12.5/block/tar.c =================================================================== --- qemu-kvm-0.12.5.orig/block/tar.c +++ qemu-kvm-0.12.5/block/tar.c @@ -83,7 +83,8 @@ static int str_ends(char *str, const cha 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(BlockDriverSta 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; } @@ -201,12 +209,13 @@ static int tar_open(BlockDriverState *bs 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! */ ++++++ kvm-qemu-preXX-e1000-check-for-overflow-whenever-issuing-PCI-dma-reads.patch ++++++ >From 7fff7710abc9893d8dce5dbad1e7093caf521132 Mon Sep 17 00:00:00 2001 From: Anthony Liguori <[email protected]> Date: Wed, 4 Jan 2012 14:50:45 -0600 Subject: e1000: check for overflow whenever issuing PCI dma reads Reported-by: Nicolae Mogoreanu <[email protected]> Signed-off-by: Anthony Liguori <[email protected]> --- hw/e1000.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) Index: qemu-kvm-0.12.5/hw/e1000.c =================================================================== --- qemu-kvm-0.12.5.orig/hw/e1000.c +++ qemu-kvm-0.12.5/hw/e1000.c @@ -456,6 +456,7 @@ process_tx_desc(E1000State *s, struct e1 bytes = split_size; if (tp->size + bytes > msh) bytes = msh - tp->size; + bytes = MIN(sizeof(tp->data) - tp->size, bytes); cpu_physical_memory_read(addr, tp->data + tp->size, bytes); if ((sz = tp->size + bytes) >= hdr && tp->size < hdr) memmove(tp->header, tp->data, hdr); @@ -471,6 +472,7 @@ process_tx_desc(E1000State *s, struct e1 // context descriptor TSE is not set, while data descriptor TSE is set DBGOUT(TXERR, "TCP segmentaion Error\n"); } else { + split_size = MIN(sizeof(tp->data) - tp->size, split_size); cpu_physical_memory_read(addr, tp->data + tp->size, split_size); tp->size += split_size; } -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
