Noux: fix sendto(), set args before each syscall

Set addrlen and dest_addr explicitly before each system call.

Fixes .
This commit is contained in:
Josef Söntgen 2012-06-25 15:49:10 +02:00 committed by Norman Feske
parent 3ffae58572
commit 883453c65d

@ -1376,9 +1376,6 @@ namespace {
return -1;
}
sysio()->sendto_in.addrlen = addrlen;
Genode::memcpy(&sysio()->sendto_in.dest_addr, dest_addr, addrlen);
/* wipe-out sendto buffer */
Genode::memset(sysio()->sendto_in.buf, 0, sizeof (sysio()->sendto_in.buf));
@ -1390,6 +1387,15 @@ namespace {
sysio()->sendto_in.len = curr_len;
Genode::memcpy(sysio()->sendto_in.buf, src, curr_len);
if (addrlen == 0) {
sysio()->sendto_in.addrlen = 0;
Genode::memset(&sysio()->sendto_in.dest_addr, 0, sizeof (struct sockaddr));
}
else {
sysio()->sendto_in.addrlen = addrlen;
Genode::memcpy(&sysio()->sendto_in.dest_addr, dest_addr, addrlen);
}
if (!noux()->syscall(Noux::Session::SYSCALL_SENDTO)) {
return -1;
}