[Pkg-xen-changes] r600 - in branches/etch/xen-3.0/debian: . patches

Bastian Blank waldi at alioth.debian.org
Sat Jul 12 11:34:28 UTC 2008


Author: waldi
Date: Sat Jul 12 11:34:28 2008
New Revision: 600

Log:
Fix CVS-2008-2004.

* debian/changelog: Update.
* debian/patches/00list: Add new patch.
* debian/patches/CVE-2008-2004.dpatch: Add.


Added:
   branches/etch/xen-3.0/debian/patches/CVE-2008-2004.dpatch   (contents, props changed)
Modified:
   branches/etch/xen-3.0/debian/changelog
   branches/etch/xen-3.0/debian/patches/00list

Modified: branches/etch/xen-3.0/debian/changelog
==============================================================================
--- branches/etch/xen-3.0/debian/changelog	(original)
+++ branches/etch/xen-3.0/debian/changelog	Sat Jul 12 11:34:28 2008
@@ -4,6 +4,8 @@
     See: CVE-2007-5906
   * Fix range checks in ioemu block support.
     See: CVE-2008-0928
+  * Don't allow block image format auto-probing.
+    See: CVE-2008-2004
 
  -- Bastian Blank <waldi at debian.org>  Sat, 12 Jul 2008 12:52:46 +0200
 

Modified: branches/etch/xen-3.0/debian/patches/00list
==============================================================================
--- branches/etch/xen-3.0/debian/patches/00list	(original)
+++ branches/etch/xen-3.0/debian/patches/00list	Sat Jul 12 11:34:28 2008
@@ -12,3 +12,4 @@
 CVE-2007-1320
 CVE-2007-5906
 CVE-2008-0928
+CVE-2008-2004

Added: branches/etch/xen-3.0/debian/patches/CVE-2008-2004.dpatch
==============================================================================
--- (empty file)
+++ branches/etch/xen-3.0/debian/patches/CVE-2008-2004.dpatch	Sat Jul 12 11:34:28 2008
@@ -0,0 +1,133 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+
+ at DPATCH@
+diff -r 42c6318fb648 -r 9333e98676f8 tools/ioemu/block-vvfat.c
+--- a/tools/ioemu/block-vvfat.c	Wed Feb 20 17:46:10 2008 +0000
++++ b/tools/ioemu/block-vvfat.c	Sat Jul 12 13:32:21 2008 +0200
+@@ -2738,7 +2738,7 @@ static int enable_write_target(BDRVVVFAT
+ 		s->qcow_filename, s->sector_count, "fat:", 0) < 0)
+ 	return -1;
+     s->qcow = bdrv_new("");
+-    if (s->qcow == NULL || bdrv_open(s->qcow, s->qcow_filename, 0) < 0)
++    if (s->qcow == NULL || bdrv_open2(s->qcow, s->qcow_filename, 0, &bdrv_raw) < 0)
+ 	return -1;
+ 
+ #ifndef _WIN32
+diff -r 42c6318fb648 -r 9333e98676f8 tools/ioemu/block.c
+--- a/tools/ioemu/block.c	Wed Feb 20 17:46:10 2008 +0000
++++ b/tools/ioemu/block.c	Sat Jul 12 13:32:21 2008 +0200
+@@ -240,37 +240,6 @@ static BlockDriver *find_image_format(co
+     return drv;
+ }
+ 
+-int bdrv_open(BlockDriverState *bs, const char *filename, int snapshot)
+-{
+-#ifdef CONFIG_COCOA
+-    if ( strncmp( filename, "/dev/cdrom", 10 ) == 0 ) {
+-        kern_return_t kernResult;
+-        io_iterator_t mediaIterator;
+-        char bsdPath[ MAXPATHLEN ];
+-        int fd;
+- 
+-        kernResult = FindEjectableCDMedia( &mediaIterator );
+-        kernResult = GetBSDPath( mediaIterator, bsdPath, sizeof( bsdPath ) );
+-    
+-        if ( bsdPath[ 0 ] != '\0' ) {
+-            strcat(bsdPath,"s0");
+-            /* some CDs don't have a partition 0 */
+-            fd = open(bsdPath, O_RDONLY | O_BINARY | O_LARGEFILE);
+-            if (fd < 0) {
+-                bsdPath[strlen(bsdPath)-1] = '1';
+-            } else {
+-                close(fd);
+-            }
+-            filename = bsdPath;
+-        }
+-        
+-        if ( mediaIterator )
+-            IOObjectRelease( mediaIterator );
+-    }
+-#endif
+-    return bdrv_open2(bs, filename, snapshot, NULL);
+-}
+-
+ int bdrv_open2(BlockDriverState *bs, const char *filename, int snapshot,
+                BlockDriver *drv)
+ {
+@@ -293,7 +262,7 @@ int bdrv_open2(BlockDriverState *bs, con
+         if (!bs1) {
+             return -1;
+         }
+-        if (bdrv_open(bs1, filename, 0) < 0) {
++        if (bdrv_open2(bs1, filename, 0, NULL) < 0) {
+             bdrv_delete(bs1);
+             return -1;
+         }
+@@ -340,7 +309,7 @@ int bdrv_open2(BlockDriverState *bs, con
+             bdrv_close(bs);
+             return -1;
+         }
+-        if (bdrv_open(bs->backing_hd, bs->backing_file, 0) < 0)
++        if (bdrv_open2(bs->backing_hd, bs->backing_file, 0, &bdrv_raw) < 0)
+             goto fail;
+     }
+ 
+diff -r 42c6318fb648 -r 9333e98676f8 tools/ioemu/hw/usb-msd.c
+--- a/tools/ioemu/hw/usb-msd.c	Wed Feb 20 17:46:10 2008 +0000
++++ b/tools/ioemu/hw/usb-msd.c	Sat Jul 12 13:32:21 2008 +0200
+@@ -383,7 +383,7 @@ USBDevice *usb_msd_init(const char *file
+         return NULL;
+ 
+     bdrv = bdrv_new("usb");
+-    bdrv_open(bdrv, filename, 0);
++    bdrv_open2(bdrv, filename, 0, &bdrv_raw);
+ 
+     s->dev.speed = USB_SPEED_FULL;
+     s->dev.handle_packet = usb_generic_handle_packet;
+diff -r 42c6318fb648 -r 9333e98676f8 tools/ioemu/monitor.c
+--- a/tools/ioemu/monitor.c	Wed Feb 20 17:46:10 2008 +0000
++++ b/tools/ioemu/monitor.c	Sat Jul 12 13:32:21 2008 +0200
+@@ -356,7 +356,7 @@ void do_change(const char *device, const
+     }
+     if (eject_device(bs, 0) < 0)
+         return;
+-    bdrv_open(bs, filename, 0);
++    bdrv_open2(bs, filename, 0, &bdrv_raw);
+     if (bdrv_is_encrypted(bs)) {
+         term_printf("%s is encrypted.\n", device);
+         for(i = 0; i < 3; i++) {
+diff -r 42c6318fb648 -r 9333e98676f8 tools/ioemu/vl.c
+--- a/tools/ioemu/vl.c	Wed Feb 20 17:46:10 2008 +0000
++++ b/tools/ioemu/vl.c	Sat Jul 12 13:32:21 2008 +0200
+@@ -6545,7 +6545,7 @@ int main(int argc, char **argv)
+                 bdrv_set_type_hint(fd_table[i], BDRV_TYPE_FLOPPY);
+             }
+             if (fd_filename[i] != '\0') {
+-                if (bdrv_open(fd_table[i], fd_filename[i], snapshot) < 0) {
++                if (bdrv_open2(fd_table[i], fd_filename[i], snapshot, &bdrv_raw) < 0) {
+                     fprintf(stderr, "qemu: could not open floppy disk image '%s'\n",
+                             fd_filename[i]);
+                     exit(1);
+diff -r 42c6318fb648 -r 9333e98676f8 tools/ioemu/xenstore.c
+--- a/tools/ioemu/xenstore.c	Wed Feb 20 17:46:10 2008 +0000
++++ b/tools/ioemu/xenstore.c	Sat Jul 12 13:32:21 2008 +0200
+@@ -59,6 +59,7 @@ void xenstore_parse_domain_config(int do
+     char *bpath = NULL, *dev = NULL, *params = NULL, *type = NULL;
+     int i;
+     unsigned int len, num, hd_index;
++    BlockDriver *format;
+ 
+     for(i = 0; i < MAX_DISKS; i++)
+         hd_filename[i] = NULL;
+@@ -127,8 +128,9 @@ void xenstore_parse_domain_config(int do
+ 	    xs_watch(xsh, buf, dev);
+ 	}
+ 	if (hd_filename[hd_index]) {
+-            if (bdrv_open(bs_table[hd_index], hd_filename[hd_index],
+-			  0 /* snapshot */) < 0)
++            /* Force raw! */
++            if (bdrv_open2(bs_table[hd_index], hd_filename[hd_index],
++			   0 /* snapshot */, &bdrv_raw) < 0)
+                 fprintf(stderr, "qemu: could not open hard disk image '%s'\n",
+                         hd_filename[hd_index]);
+ 	}



More information about the Pkg-xen-changes mailing list