Package: qemu
Version: 0.9.0-1netsweng2
Severity: normal
Tags: patch

NB: this is against the package in experimental.

Change in linux-user/syscall.c since 0.8.2 have introduced a crash. It
looks like a simple cut&patse sort of problem. When allocating space for
a sockaddr in do_getpeername()/do_getsockname(), what appears to be an
address is used instead of the value (normally 16). The patch fixes the
calls to alloca() to be consistant with the other calls to alloca() in
other socket functions.

-- System Information:
Debian Release: 4.0
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-3-amd64
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)

Versions of packages qemu depends on:
ii  bochsbios                     2.3-2      BIOS for the Bochs emulator
ii  openhackware                  0.4.1-2    OpenFirmware emulator for PowerPC
ii  proll                         18-2       JavaStation PROM 2.x compatible re
ii  vgabios                       0.6a-1     VGA BIOS software for the Bochs an

Versions of packages qemu recommends:
ii  debootstrap                   0.3.3.1    Bootstrap a basic Debian system
ii  sharutils                     1:4.2.1-15 shar, unshar, uuencode, uudecode
pn  vde2                          <none>     (no description available)

-- no debconf information
#DPATCHLEVEL=0
--- linux-user/syscall.c.orig   2007-02-21 10:40:20.000000000 -0500
+++ linux-user/syscall.c        2007-02-21 10:40:52.000000000 -0500
@@ -977,7 +977,7 @@
                            target_ulong target_addrlen)
 {
     socklen_t addrlen = tget32(target_addrlen);
-    void *addr = alloca(target_addrlen);
+    void *addr = alloca(addrlen);
     long ret;
 
     ret = get_errno(getpeername(fd, addr, &addrlen));
@@ -992,7 +992,7 @@
                            target_ulong target_addrlen)
 {
     socklen_t addrlen = tget32(target_addrlen);
-    void *addr = alloca(target_addrlen);
+    void *addr = alloca(addrlen);
     long ret;
 
     ret = get_errno(getsockname(fd, addr, &addrlen));

Reply via email to