mirror of https://github.com/xemu-project/xemu.git
9p: proxy: Fix size passed to `connect`
The size to pass to the `connect` call is the size of the entire `struct sockaddr_un`. Passing anything shorter than this causes errors on darwin. Signed-off-by: Keno Fischer <keno@juliacomputing.com> Signed-off-by: Greg Kurz <groug@kaod.org>
This commit is contained in:
parent
5d328d7d2f
commit
fde1f3e4a0
|
@ -1088,7 +1088,7 @@ static int proxy_ioc_getversion(FsContext *fs_ctx, V9fsPath *path,
|
||||||
|
|
||||||
static int connect_namedsocket(const char *path, Error **errp)
|
static int connect_namedsocket(const char *path, Error **errp)
|
||||||
{
|
{
|
||||||
int sockfd, size;
|
int sockfd;
|
||||||
struct sockaddr_un helper;
|
struct sockaddr_un helper;
|
||||||
|
|
||||||
if (strlen(path) >= sizeof(helper.sun_path)) {
|
if (strlen(path) >= sizeof(helper.sun_path)) {
|
||||||
|
@ -1102,8 +1102,7 @@ static int connect_namedsocket(const char *path, Error **errp)
|
||||||
}
|
}
|
||||||
strcpy(helper.sun_path, path);
|
strcpy(helper.sun_path, path);
|
||||||
helper.sun_family = AF_UNIX;
|
helper.sun_family = AF_UNIX;
|
||||||
size = strlen(helper.sun_path) + sizeof(helper.sun_family);
|
if (connect(sockfd, (struct sockaddr *)&helper, sizeof(helper)) < 0) {
|
||||||
if (connect(sockfd, (struct sockaddr *)&helper, size) < 0) {
|
|
||||||
error_setg_errno(errp, errno, "failed to connect to '%s'", path);
|
error_setg_errno(errp, errno, "failed to connect to '%s'", path);
|
||||||
close(sockfd);
|
close(sockfd);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in New Issue