mirror of
https://gitlab.freedesktop.org/libfprint/libfprint.git
synced 2026-09-10 13:00:08 +00:00
goodixmoc: Cleanup the byte reader usage
This commit is contained in:
committed by
Marco Trevisan
parent
0c0baf639e
commit
3138ad0c8a
@@ -157,8 +157,7 @@ fp_cmd_receive_cb (FpiUsbTransfer *transfer,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
reader.data = transfer->buffer;
|
fpi_byte_reader_init (&reader, transfer->buffer, transfer->actual_length);
|
||||||
reader.size = transfer->actual_length;
|
|
||||||
|
|
||||||
if (gx_proto_parse_header (&reader, &header) != 0)
|
if (gx_proto_parse_header (&reader, &header) != 0)
|
||||||
{
|
{
|
||||||
@@ -168,7 +167,8 @@ fp_cmd_receive_cb (FpiUsbTransfer *transfer,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fpi_byte_reader_set_pos (&reader, PACKAGE_HEADER_SIZE + header.len))
|
if (header.len < PACKAGE_CRC_SIZE ||
|
||||||
|
!fpi_byte_reader_set_pos (&reader, PACKAGE_HEADER_SIZE + header.len - PACKAGE_CRC_SIZE))
|
||||||
{
|
{
|
||||||
fpi_ssm_mark_failed (transfer->ssm,
|
fpi_ssm_mark_failed (transfer->ssm,
|
||||||
fpi_device_error_new_msg (FP_DEVICE_ERROR_PROTO,
|
fpi_device_error_new_msg (FP_DEVICE_ERROR_PROTO,
|
||||||
@@ -176,7 +176,13 @@ fp_cmd_receive_cb (FpiUsbTransfer *transfer,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
gx_proto_crc32_calc (transfer->buffer, PACKAGE_HEADER_SIZE + header.len, (uint8_t *) &crc32_calc);
|
/* Exclude the CRC from the package length */
|
||||||
|
header.len -= PACKAGE_CRC_SIZE;
|
||||||
|
|
||||||
|
/* The reader is positioned right at the CRC, i.e. at the end of the data the
|
||||||
|
* CRC is computed over, so use its position as the length. */
|
||||||
|
gx_proto_crc32_calc (transfer->buffer, fpi_byte_reader_get_pos (&reader),
|
||||||
|
(uint8_t *) &crc32_calc);
|
||||||
|
|
||||||
if (!fpi_byte_reader_get_uint32_le (&reader, &crc32) ||
|
if (!fpi_byte_reader_get_uint32_le (&reader, &crc32) ||
|
||||||
GUINT32_FROM_LE (crc32_calc) != crc32)
|
GUINT32_FROM_LE (crc32_calc) != crc32)
|
||||||
@@ -189,9 +195,7 @@ fp_cmd_receive_cb (FpiUsbTransfer *transfer,
|
|||||||
|
|
||||||
cmd = MAKE_CMD_EX (header.cmd0, header.cmd1);
|
cmd = MAKE_CMD_EX (header.cmd0, header.cmd1);
|
||||||
|
|
||||||
fpi_byte_reader_set_pos (&reader, 0);
|
fpi_byte_reader_init (&reader, &transfer->buffer[PACKAGE_HEADER_SIZE], header.len);
|
||||||
reader.data = &transfer->buffer[PACKAGE_HEADER_SIZE];
|
|
||||||
reader.size = header.len;
|
|
||||||
|
|
||||||
if (gx_proto_parse_body (cmd, &reader, &cmd_reponse) != 0)
|
if (gx_proto_parse_body (cmd, &reader, &cmd_reponse) != 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -253,11 +253,6 @@ gx_proto_parse_header (FpiByteReader *reader,
|
|||||||
if (!fpi_byte_reader_get_uint8 (reader, &pheader->rev_crc8))
|
if (!fpi_byte_reader_get_uint8 (reader, &pheader->rev_crc8))
|
||||||
g_return_val_if_reached (-1);
|
g_return_val_if_reached (-1);
|
||||||
|
|
||||||
if (pheader->len < PACKAGE_CRC_SIZE)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
pheader->len -= PACKAGE_CRC_SIZE;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -266,7 +261,6 @@ gx_proto_parse_fingerid (FpiByteReader *reader,
|
|||||||
ptemplate_format_t template)
|
ptemplate_format_t template)
|
||||||
{
|
{
|
||||||
uint8_t byte;
|
uint8_t byte;
|
||||||
const uint8_t *buffer;
|
|
||||||
|
|
||||||
if (!template)
|
if (!template)
|
||||||
return -1;
|
return -1;
|
||||||
@@ -283,16 +277,12 @@ gx_proto_parse_fingerid (FpiByteReader *reader,
|
|||||||
if (!fpi_byte_reader_skip (reader, 1))
|
if (!fpi_byte_reader_skip (reader, 1))
|
||||||
g_return_val_if_reached (-1);
|
g_return_val_if_reached (-1);
|
||||||
|
|
||||||
if (!fpi_byte_reader_get_data (reader, sizeof (template->accountid), &buffer))
|
if (!fpi_byte_reader_get_data_static (reader, template->accountid))
|
||||||
g_return_val_if_reached (-1);
|
g_return_val_if_reached (-1);
|
||||||
|
|
||||||
memcpy (template->accountid, buffer, sizeof (template->accountid));
|
if (!fpi_byte_reader_get_data_static (reader, template->tid))
|
||||||
|
|
||||||
if (!fpi_byte_reader_get_data (reader, sizeof (template->tid), &buffer))
|
|
||||||
g_return_val_if_reached (-1);
|
g_return_val_if_reached (-1);
|
||||||
|
|
||||||
memcpy (template->tid, buffer, sizeof (template->tid));
|
|
||||||
|
|
||||||
if (!fpi_byte_reader_get_uint8 (reader, &template->payload.size))
|
if (!fpi_byte_reader_get_uint8 (reader, &template->payload.size))
|
||||||
g_return_val_if_reached (-1);
|
g_return_val_if_reached (-1);
|
||||||
|
|
||||||
@@ -302,11 +292,10 @@ gx_proto_parse_fingerid (FpiByteReader *reader,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fpi_byte_reader_get_data (reader, template->payload.size, &buffer))
|
if (!(fpi_byte_reader_get_data_static) (reader, template->payload.size,
|
||||||
|
template->payload.data))
|
||||||
g_return_val_if_reached (-1);
|
g_return_val_if_reached (-1);
|
||||||
|
|
||||||
memcpy (template->payload.data, buffer, template->payload.size);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user