mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-15 16:35:06 +03:00
android: CameraDevice: Add more camera3_capture_request validation
This adds more validation to camera3_capture_request mainly about buffer_handle values. Signed-off-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
7633a2d24d
commit
90a0430abc
1 changed files with 28 additions and 1 deletions
|
@ -263,11 +263,38 @@ bool isValidRequest(camera3_capture_request_t *camera3Request)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!camera3Request->num_output_buffers) {
|
if (!camera3Request->num_output_buffers ||
|
||||||
|
!camera3Request->output_buffers) {
|
||||||
LOG(HAL, Error) << "No output buffers provided";
|
LOG(HAL, Error) << "No output buffers provided";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (uint32_t i = 0; i < camera3Request->num_output_buffers; i++) {
|
||||||
|
const camera3_stream_buffer_t &outputBuffer =
|
||||||
|
camera3Request->output_buffers[i];
|
||||||
|
if (!outputBuffer.buffer || !(*outputBuffer.buffer)) {
|
||||||
|
LOG(HAL, Error) << "Invalid native handle";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const native_handle_t *handle = *outputBuffer.buffer;
|
||||||
|
constexpr int kNativeHandleMaxFds = 1024;
|
||||||
|
if (handle->numFds < 0 || handle->numFds > kNativeHandleMaxFds) {
|
||||||
|
LOG(HAL, Error)
|
||||||
|
<< "Invalid number of fds (" << handle->numFds
|
||||||
|
<< ") in buffer " << i;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr int kNativeHandleMaxInts = 1024;
|
||||||
|
if (handle->numInts < 0 || handle->numInts > kNativeHandleMaxInts) {
|
||||||
|
LOG(HAL, Error)
|
||||||
|
<< "Invalid number of ints (" << handle->numInts
|
||||||
|
<< ") in buffer " << i;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue