Skip to content

Commit a61c30b

Browse files
committed
Merge remote-tracking branch 'remotes/mjt/tags/patch-fetch' into staging
qemu-socket unix socket bugfix 2021-09-06 # gpg: Signature made Mon 06 Sep 2021 16:19:32 BST # gpg: using RSA key 7B73BAD68BE7A2C289314B22701B4F6B1A693E59 # gpg: issuer "[email protected]" # gpg: Good signature from "Michael Tokarev <[email protected]>" [full] # gpg: aka "Michael Tokarev <[email protected]>" [full] # gpg: aka "Michael Tokarev <[email protected]>" [full] # Primary key fingerprint: 6EE1 95D1 886E 8FFB 810D 4324 457C E0A0 8044 65C5 # Subkey fingerprint: 7B73 BAD6 8BE7 A2C2 8931 4B22 701B 4F6B 1A69 3E59 * remotes/mjt/tags/patch-fetch: qemu-sockets: fix unix socket path copy (again) Signed-off-by: Peter Maydell <[email protected]>
2 parents 935efca + 118d527 commit a61c30b

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

util/qemu-sockets.c

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1345,25 +1345,22 @@ socket_sockaddr_to_address_unix(struct sockaddr_storage *sa,
13451345
SocketAddress *addr;
13461346
struct sockaddr_un *su = (struct sockaddr_un *)sa;
13471347

1348-
assert(salen >= sizeof(su->sun_family) + 1 &&
1349-
salen <= sizeof(struct sockaddr_un));
1350-
13511348
addr = g_new0(SocketAddress, 1);
13521349
addr->type = SOCKET_ADDRESS_TYPE_UNIX;
1350+
salen -= offsetof(struct sockaddr_un, sun_path);
13531351
#ifdef CONFIG_LINUX
1354-
if (!su->sun_path[0]) {
1352+
if (salen > 0 && !su->sun_path[0]) {
13551353
/* Linux abstract socket */
1356-
addr->u.q_unix.path = g_strndup(su->sun_path + 1,
1357-
salen - sizeof(su->sun_family) - 1);
1354+
addr->u.q_unix.path = g_strndup(su->sun_path + 1, salen - 1);
13581355
addr->u.q_unix.has_abstract = true;
13591356
addr->u.q_unix.abstract = true;
13601357
addr->u.q_unix.has_tight = true;
1361-
addr->u.q_unix.tight = salen < sizeof(*su);
1358+
addr->u.q_unix.tight = salen < sizeof(su->sun_path);
13621359
return addr;
13631360
}
13641361
#endif
13651362

1366-
addr->u.q_unix.path = g_strndup(su->sun_path, sizeof(su->sun_path));
1363+
addr->u.q_unix.path = g_strndup(su->sun_path, salen);
13671364
return addr;
13681365
}
13691366
#endif /* WIN32 */

0 commit comments

Comments
 (0)