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)
if (prep_unix_sk_cwd(ui, &cwd_fd))
return -1;
if (bind(sk, (struct sockaddr *)&addr,
sizeof(addr.sun_family) + ui->ue->name.len)) {
if (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");
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;
char fname[PATH_MAX];
......@@ -986,6 +988,7 @@ static int bind_unix_sk(int sk, struct unix_sk_info *ui)
goto done;
}
}
}
if (ui->ue->state != TCP_LISTEN)
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