Skip to content

Commit b08917a

Browse files
committed
api: raise an error if the socket path is too long
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
1 parent e8759b9 commit b08917a

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

api.c

+5
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ int api_bindlisten(const char *api_socket)
2121
}
2222
memset(&addr, 0, sizeof(addr));
2323
addr.sun_family = AF_UNIX;
24+
if (strlen(api_socket) >= sizeof(addr.sun_path)) {
25+
fprintf(stderr, "the specified API socket path is too long (>= %lu)\n",
26+
sizeof(addr.sun_path));
27+
return -1;
28+
}
2429
strncpy(addr.sun_path, api_socket, sizeof(addr.sun_path) - 1);
2530
if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
2631
perror("api_bindlisten: bind");

tests/test-slirp4netns-api-socket.sh

+9
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ wait_for_network_namespace $child
1010

1111
tmpdir=$(mktemp -d /tmp/slirp4netns-bench.XXXXXXXXXX)
1212
apisocket=${tmpdir}/slirp4netns.sock
13+
apisocketlongpath=${tmpdir}/slirp4netns-TOO-LONG-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.sock
14+
15+
if slirp4netns -c $child --api-socket $apisocketlongpath tun11; then
16+
echo "expected failure with apisocket path too long" >&2
17+
kill -9 $child
18+
rm -rf $tmpdir
19+
exit 1
20+
fi
21+
1322
slirp4netns -c $child --api-socket $apisocket tun11 &
1423
slirp_pid=$!
1524

0 commit comments

Comments
 (0)