mirror of
https://github.com/SELinuxProject/selinux
synced 2024-12-22 05:59:58 +00:00
restorecond: invalidate local_lock_fd properly when closing it
If flock(local_lock_fd,...) fails, in function local_server(), the file descriptor to the lock file is closed but local_lock_fd is not reset to -1. This leads to server() calling end_local_server(), which closes the file descriptor again. Fix this double-close issue by setting local_lock_fd to -1 after closing it. This issue was found by using Facebook's Infer static analyzer. Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
This commit is contained in:
parent
a9e0004f60
commit
c672254329
@ -230,9 +230,10 @@ static int local_server(void) {
|
||||
return -1;
|
||||
}
|
||||
if (flock(local_lock_fd, LOCK_EX | LOCK_NB) < 0) {
|
||||
close(local_lock_fd);
|
||||
if (debug_mode)
|
||||
perror("flock");
|
||||
close(local_lock_fd);
|
||||
local_lock_fd = -1;
|
||||
return -1;
|
||||
}
|
||||
/* watch for stdin/terminal going away */
|
||||
|
Loading…
Reference in New Issue
Block a user