Fix libc_noux's Plugin::getpeername() method
The argument's order was wrong in the memcpy() call. In addition the wrong sysio struct was used for the addrlen argument. Fixes #238.
This commit is contained in:
parent
ed867817b6
commit
f325f314b5
|
@ -1278,14 +1278,16 @@ namespace {
|
||||||
socklen_t *addrlen)
|
socklen_t *addrlen)
|
||||||
{
|
{
|
||||||
sysio()->getpeername_in.fd = noux_fd(fd->context);
|
sysio()->getpeername_in.fd = noux_fd(fd->context);
|
||||||
|
sysio()->getpeername_in.addrlen = *addrlen;
|
||||||
|
|
||||||
if (!noux()->syscall(Noux::Session::SYSCALL_GETPEERNAME)) {
|
if (!noux()->syscall(Noux::Session::SYSCALL_GETPEERNAME)) {
|
||||||
/* errno */
|
/* errno */
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
Genode::memcpy(&sysio()->getpeername_in.addr, addr,
|
|
||||||
sizeof (struct sockaddr));
|
Genode::memcpy(addr, &sysio()->getpeername_in.addr,
|
||||||
sysio()->bind_in.addrlen = *addrlen;
|
sizeof (struct sockaddr));
|
||||||
|
*addrlen = sysio()->getpeername_in.addrlen;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user