Commit 3166032e authored by Kirill Tkhai's avatar Kirill Tkhai Committed by Pavel Emelyanov

unix: Do not autobind unnamed unix sockets

unix: Do not autobind unnamed unix sockets

addlen equal to sizeof(addr.sun_family) leads
to autobinding of socket.

If it had been autobinded when we dumped it,
name.len wouldn't have been zero. So, this
binding is wrong. Fix that.

v2: Merge two conditional branches together
Signed-off-by: 's avatarKirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent af5b145c
...@@ -958,13 +958,15 @@ static int bind_unix_sk(int sk, struct unix_sk_info *ui) ...@@ -958,13 +958,15 @@ static int bind_unix_sk(int sk, struct unix_sk_info *ui)
if (prep_unix_sk_cwd(ui, &cwd_fd)) if (prep_unix_sk_cwd(ui, &cwd_fd))
return -1; return -1;
if (bind(sk, (struct sockaddr *)&addr, if (ui->ue->name.len) {
sizeof(addr.sun_family) + ui->ue->name.len)) { ret = bind(sk, (struct sockaddr *)&addr,
sizeof(addr.sun_family) + ui->ue->name.len);
if (ret < 0) {
pr_perror("Can't bind socket"); pr_perror("Can't bind socket");
goto done; goto done;
} }
if (ui->ue->name.len && *ui->name && ui->ue->file_perms) { if (*ui->name && ui->ue->file_perms) {
FilePermsEntry *perms = ui->ue->file_perms; FilePermsEntry *perms = ui->ue->file_perms;
char fname[PATH_MAX]; char fname[PATH_MAX];
...@@ -986,6 +988,7 @@ static int bind_unix_sk(int sk, struct unix_sk_info *ui) ...@@ -986,6 +988,7 @@ static int bind_unix_sk(int sk, struct unix_sk_info *ui)
goto done; goto done;
} }
} }
}
if (ui->ue->state != TCP_LISTEN) if (ui->ue->state != TCP_LISTEN)
futex_set_and_wake(&ui->prepared, 1); futex_set_and_wake(&ui->prepared, 1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment