From a6799dc5b9ded442152b3430e321d9b147b9d7fd Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Mon, 12 Aug 2019 14:02:06 +0300 Subject: hal: Fix comparison of integers of different signs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The CameraHalManager::getCameraInfo() validates the camera id it receives from the camera service, and in doing so compares it with an unsigned integer, generating a compiler error: src/android/camera_hal_manager.cpp:121:9: error: comparison of integers of different signs: 'int' and 'unsigned int' [-Werror,-Wsign-compare] if (id >= numCameras() || id < 0) { ~~ ^ ~~~~~~~~~~~~ Fix this by turning the id into an unsigned int, as camera ids can't be negative. If a negative id is received from the camera service it will be converted to a large unsigned integer that will fail the comparison with numCameras(). Signed-off-by: Laurent Pinchart Reviewed-by: Niklas Söderlund Reviewed-by: Jacopo Mondi --- src/android/camera_hal_manager.cpp | 4 ++-- src/android/camera_hal_manager.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/android/camera_hal_manager.cpp b/src/android/camera_hal_manager.cpp index 08c759df..1e66f632 100644 --- a/src/android/camera_hal_manager.cpp +++ b/src/android/camera_hal_manager.cpp @@ -113,12 +113,12 @@ unsigned int CameraHalManager::numCameras() const return cameraManager_->cameras().size(); } -int CameraHalManager::getCameraInfo(int id, struct camera_info *info) +int CameraHalManager::getCameraInfo(unsigned int id, struct camera_info *info) { if (!info) return -EINVAL; - if (id >= numCameras() || id < 0) { + if (id >= numCameras()) { LOG(HAL, Error) << "Invalid camera id '" << id << "'"; return -EINVAL; } diff --git a/src/android/camera_hal_manager.h b/src/android/camera_hal_manager.h index 8004aaf6..8228623a 100644 --- a/src/android/camera_hal_manager.h +++ b/src/android/camera_hal_manager.h @@ -30,7 +30,7 @@ public: int close(CameraProxy *proxy); unsigned int numCameras() const; - int getCameraInfo(int id, struct camera_info *info); + int getCameraInfo(unsigned int id, struct camera_info *info); private: void run() override; -- cgit v1.2.1