qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] Fix for accept
@ 2006-07-13 10:21 Pablo Virolainen
  2006-07-13 20:40 ` Fabrice Bellard
  0 siblings, 1 reply; 4+ messages in thread
From: Pablo Virolainen @ 2006-07-13 10:21 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 174 bytes --]


Following code crashes qemu user emulation.

#include <sys/types.h>
#include <sys/socket.h>

int main() {
        accept(0,NULL,NULL);
        return 0;
}

Pablo Virolainen

[-- Attachment #2: accept.patch --]
[-- Type: text/x-patch, Size: 1086 bytes --]

Index: linux-user/syscall.c
===================================================================
RCS file: /sources/qemu/qemu/linux-user/syscall.c,v
retrieving revision 1.75
diff -u -r1.75 syscall.c
--- linux-user/syscall.c	27 Jun 2006 21:08:10 -0000	1.75
+++ linux-user/syscall.c	13 Jul 2006 10:18:57 -0000
@@ -878,9 +878,20 @@
             int sockfd = tgetl(vptr);
             target_ulong target_addr = tgetl(vptr + n);
             target_ulong target_addrlen = tgetl(vptr + 2 * n);
-            socklen_t addrlen = tget32(target_addrlen);
-            void *addr = alloca(addrlen);
-
+            socklen_t addrlen=0;
+	    /* Just to get rid of compiler warnings */
+	    ulong addrt=0;
+            void *addr;
+	    
+	    get_user(addrlen,&target_addrlen);
+	    get_user(addrt,&target_addr);
+	    
+	    if (addrt!=0) {
+	        addr = alloca(addrlen);
+	    } else {
+	        addr = NULL;
+	    }
+	    
             ret = get_errno(accept(sockfd, addr, &addrlen));
             if (!is_error(ret)) {
                 host_to_target_sockaddr(target_addr, addr, addrlen);

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-07-14  9:53 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-13 10:21 [Qemu-devel] Fix for accept Pablo Virolainen
2006-07-13 20:40 ` Fabrice Bellard
2006-07-14  7:48   ` Pablo Virolainen
2006-07-14  9:53     ` Fabrice Bellard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).