libcamera: Open files with O_CLOEXEC

Files opened internally in libcamera without the O_CLOEXEC file will
remain open upon a call to one of the exec(3) functions. As exec()
doesn't destroy local or global objects, this can lead to various side
effects. Avoid this by opening file descriptors with O_CLOEXEC for all
internal files.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Laurent Pinchart
2023-03-26 12:49:32 +03:00
parent 4cd9cb4a90
commit 436b38fd89
4 changed files with 7 additions and 4 deletions
+1 -1
View File
@@ -477,7 +477,7 @@ int MediaDevice::open()
return -EBUSY;
}
fd_ = UniqueFD(::open(deviceNode_.c_str(), O_RDWR));
fd_ = UniqueFD(::open(deviceNode_.c_str(), O_RDWR | O_CLOEXEC));
if (!fd_.isValid()) {
int ret = -errno;
LOG(MediaDevice, Error)