diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-03-31 18:08:22 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-04-01 14:18:10 +0300 |
commit | f9e2df951969f10f1ee1e46fb806942a27db8aca (patch) | |
tree | 37742d510e38cac8d75b70d98acc77aadfafcda7 | |
parent | b90faccb2c4c7a7919bfd229c48b9cf8a26bb46d (diff) |
libcamera: v4l2_videodevice: Fix potential errno overwrite
The errno variable can potentially be overwritten by operator<<(). Store
it in a local variable before logging the error message.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
-rw-r--r-- | src/libcamera/v4l2_videodevice.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp index 009f6d55..0830be80 100644 --- a/src/libcamera/v4l2_videodevice.cpp +++ b/src/libcamera/v4l2_videodevice.cpp @@ -647,14 +647,17 @@ int V4L2VideoDevice::open() */ int V4L2VideoDevice::open(SharedFD handle, enum v4l2_buf_type type) { + int ret; + UniqueFD newFd = handle.dup(); if (!newFd.isValid()) { + ret = -errno; LOG(V4L2, Error) << "Failed to duplicate file handle: " - << strerror(errno); - return -errno; + << strerror(-ret); + return ret; } - int ret = V4L2Device::setFd(std::move(newFd)); + ret = V4L2Device::setFd(std::move(newFd)); if (ret < 0) { LOG(V4L2, Error) << "Failed to set file handle: " << strerror(-ret); |