aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNicholas Ngai <nicholas@ngai.me>2021-10-12 17:55:30 -0700
committerNicholas Ngai <nicholas@ngai.me>2021-10-12 17:55:30 -0700
commit559addbcf0807fcf5f9ec664d96bc4c8faa2d850 (patch)
treea894f56cd60858148c7a0b499960fdf1748323b5 /src
parentf6ee2a7d58d0fbfbffefb255c2374a3990578fed (diff)
downloadslirp-559addbcf0807fcf5f9ec664d96bc4c8faa2d850.zip
slirp-559addbcf0807fcf5f9ec664d96bc4c8faa2d850.tar.gz
slirp-559addbcf0807fcf5f9ec664d96bc4c8faa2d850.tar.bz2
socket: Check address family for Unix-to-inet accept translation
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
Diffstat (limited to 'src')
-rw-r--r--src/socket.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/socket.c b/src/socket.c
index e423875..c24fe28 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -1064,9 +1064,17 @@ void sotranslate_accept(struct socket *so)
case AF_UNIX:
/* Translate Unix socket to random ephemeral source port. */
- so->so_ffamily = AF_INET;
- so->so_faddr = slirp->vhost_addr;
- so->so_fport = g_rand_int_range(slirp->grand, 49152, 65536);
+ if (so->slirp->in_enabled) {
+ so->so_ffamily = AF_INET;
+ so->so_faddr = slirp->vhost_addr;
+ so->so_fport = g_rand_int_range(slirp->grand, 49152, 65536);
+ } else if (so->slirp->in6_enabled) {
+ so->so_ffamily = AF_INET6;
+ so->so_faddr6 = slirp->vhost_addr6;
+ so->so_fport6 = g_rand_int_range(slirp->grand, 49152, 65536);
+ } else {
+ g_assert_not_reached();
+ }
break;
default: