summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-03-31 18:08:22 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-04-01 14:18:10 +0300
commitf9e2df951969f10f1ee1e46fb806942a27db8aca (patch)
tree37742d510e38cac8d75b70d98acc77aadfafcda7
parentb90faccb2c4c7a7919bfd229c48b9cf8a26bb46d (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.cpp9
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);