From c216f04dd1fd1cfe21a71d26bf6e17fc1a37983a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Tue, 9 Jun 2026 14:19:17 +0200 Subject: [PATCH] egis_etu905: Do not leak the transfer buffer The buffer is now owned by the data, so we should not steal it when passing it around or we'll leak. --- libfprint/drivers/egismoc/egis_etu905.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libfprint/drivers/egismoc/egis_etu905.c b/libfprint/drivers/egismoc/egis_etu905.c index be0c6e05..f91f0472 100644 --- a/libfprint/drivers/egismoc/egis_etu905.c +++ b/libfprint/drivers/egismoc/egis_etu905.c @@ -207,7 +207,8 @@ egis_etu905_cmd_receive_cb (FpiUsbTransfer *transfer, fpi_ssm_mark_failed (transfer->ssm, error); return; } - if (data == NULL || transfer->actual_length < egis_etu905_read_prefix_len) + + if (transfer->actual_length < egis_etu905_read_prefix_len) { fpi_ssm_mark_failed (transfer->ssm, fpi_device_error_new (FP_DEVICE_ERROR_GENERAL)); @@ -216,6 +217,7 @@ egis_etu905_cmd_receive_cb (FpiUsbTransfer *transfer, /* Store the response data and let the cmd_ssm_done callback invoke * the actual callback with the stored data */ + g_assert (data != NULL); data->buffer_in = g_steal_pointer (&transfer->buffer); data->length_in = transfer->actual_length; @@ -282,7 +284,7 @@ egis_etu905_cmd_ssm_done (FpiSsm *ssm, if (data && data->callback) { data->callback (device, - g_steal_pointer (&data->buffer_in), + data->buffer_in, data->length_in, g_steal_pointer (&local_error)); }