libcamera: process: Ensure that file descriptors are nonnegative

Return `-EINVAL` from `Process::start()` if any of the file descriptors
are negative as those most likely signal some kind of issue such as
missed error checking.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Barnabás Pőcze 2025-03-24 16:05:44 +01:00
parent fae2b506d7
commit 8d168f3348

View file

@ -243,6 +243,11 @@ int Process::start(const std::string &path,
if (running_) if (running_)
return -EBUSY; return -EBUSY;
for (int fd : fds) {
if (fd < 0)
return -EINVAL;
}
int childPid = fork(); int childPid = fork();
if (childPid == -1) { if (childPid == -1) {
ret = -errno; ret = -errno;
@ -298,6 +303,8 @@ void Process::closeAllFdsExcept(const std::vector<int> &fds)
std::vector<int> v(fds); std::vector<int> v(fds);
sort(v.begin(), v.end()); sort(v.begin(), v.end());
ASSERT(v.empty() || v.front() >= 0);
DIR *dir = opendir("/proc/self/fd"); DIR *dir = opendir("/proc/self/fd");
if (!dir) if (!dir)
return; return;