From 3af57e3483dc12e87e4d2b5d53a2b8e17be2b00d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 17 Jun 2026 18:41:49 +0200 Subject: [PATCH] secugen: Check transfers have a minimal lengths --- libfprint/drivers/secugen.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/libfprint/drivers/secugen.c b/libfprint/drivers/secugen.c index 36246010..e5d65ff3 100644 --- a/libfprint/drivers/secugen.c +++ b/libfprint/drivers/secugen.c @@ -526,6 +526,13 @@ init_i2c_readback_cb (FpiUsbTransfer *transfer, return; } + if (transfer->actual_length < 1) + { + fpi_ssm_mark_failed (transfer->ssm, + fpi_device_error_new (FP_DEVICE_ERROR_PROTO)); + return; + } + self->last_reg_rd = transfer->buffer[0]; self->init_reg_idx++; @@ -555,6 +562,13 @@ init_late_readback_cb (FpiUsbTransfer *transfer, return; } + if (transfer->actual_length < 1) + { + fpi_ssm_mark_failed (transfer->ssm, + fpi_device_error_new (FP_DEVICE_ERROR_PROTO)); + return; + } + self->last_reg_rd = transfer->buffer[0]; self->init_reg_idx++; @@ -584,6 +598,13 @@ init_window_readback_cb (FpiUsbTransfer *transfer, return; } + if (transfer->actual_length < 1) + { + fpi_ssm_mark_failed (transfer->ssm, + fpi_device_error_new (FP_DEVICE_ERROR_PROTO)); + return; + } + self->last_reg_rd = transfer->buffer[0]; self->init_reg_idx++; @@ -740,6 +761,13 @@ init_frame_readback_cb (FpiUsbTransfer *transfer, return; } + if (transfer->actual_length < 1) + { + fpi_ssm_mark_failed (transfer->ssm, + fpi_device_error_new (FP_DEVICE_ERROR_PROTO)); + return; + } + self->last_reg_rd = transfer->buffer[0]; self->init_reg_idx++;