Decode file descriptors returned by accept and accept4 syscalls
* net.c (do_accept): Rename to do_sockname. (sys_accept, sys_accept4): Update callers, return RVAL_FD. (sys_getsockname, sys_getpeername): Call do_sockname directly. * tests/net-fd.test: Update.
This commit is contained in:
12
net.c
12
net.c
@ -571,7 +571,7 @@ sys_listen(struct tcb *tcp)
|
||||
}
|
||||
|
||||
static int
|
||||
do_accept(struct tcb *tcp, int flags_arg)
|
||||
do_sockname(struct tcb *tcp, int flags_arg)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
printfd(tcp, tcp->u_arg[0]);
|
||||
@ -602,13 +602,15 @@ do_accept(struct tcb *tcp, int flags_arg)
|
||||
int
|
||||
sys_accept(struct tcb *tcp)
|
||||
{
|
||||
return do_accept(tcp, -1);
|
||||
do_sockname(tcp, -1);
|
||||
return RVAL_FD;
|
||||
}
|
||||
|
||||
int
|
||||
sys_accept4(struct tcb *tcp)
|
||||
{
|
||||
return do_accept(tcp, 3);
|
||||
do_sockname(tcp, 3);
|
||||
return RVAL_FD;
|
||||
}
|
||||
|
||||
int
|
||||
@ -827,13 +829,13 @@ sys_shutdown(struct tcb *tcp)
|
||||
int
|
||||
sys_getsockname(struct tcb *tcp)
|
||||
{
|
||||
return sys_accept(tcp);
|
||||
return do_sockname(tcp, -1);
|
||||
}
|
||||
|
||||
int
|
||||
sys_getpeername(struct tcb *tcp)
|
||||
{
|
||||
return sys_accept(tcp);
|
||||
return do_sockname(tcp, -1);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -41,7 +41,7 @@ grep_log()
|
||||
grep_log bind '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0'
|
||||
grep_log listen '\(0<socket:\[[0-9]+\]>, 5\) += 0'
|
||||
grep_log getsockname '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, \[15\]\) += 0'
|
||||
grep_log accept '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), NULL\}, \[2\]\) += 1'
|
||||
grep_log accept '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), NULL\}, \[2\]\) += 1<socket:\[[0-9]+\]>'
|
||||
grep_log connect '\(1<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0'
|
||||
|
||||
exit 0
|
||||
|
Reference in New Issue
Block a user