diff options
author | Nicholas Ngai <nicholas@ngai.me> | 2021-10-12 17:55:30 -0700 |
---|---|---|
committer | Nicholas Ngai <nicholas@ngai.me> | 2021-10-12 17:55:30 -0700 |
commit | 559addbcf0807fcf5f9ec664d96bc4c8faa2d850 (patch) | |
tree | a894f56cd60858148c7a0b499960fdf1748323b5 | |
parent | f6ee2a7d58d0fbfbffefb255c2374a3990578fed (diff) | |
download | slirp-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>
-rw-r--r-- | src/socket.c | 14 |
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: |