diff options
author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2024-02-19 16:56:35 +0100 |
---|---|---|
committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2024-02-19 17:25:21 +0100 |
commit | f8f28a066b9cc4a682f6ae61cc768c13daea3ca0 (patch) | |
tree | 53fa8af58c066bf40ac5b49205e73b9c460c91a2 | |
parent | adc66edd8dfb95a3ff2fbc02704580fa0504283d (diff) |
egismoc: Simplify fingerprint id and firmware reading
We can do copy and duplicate in oneshot since we are handling strings
after all.
-rw-r--r-- | libfprint/drivers/egismoc/egismoc.c | 37 |
1 files changed, 14 insertions, 23 deletions
diff --git a/libfprint/drivers/egismoc/egismoc.c b/libfprint/drivers/egismoc/egismoc.c index 811a817..27bcd73 100644 --- a/libfprint/drivers/egismoc/egismoc.c +++ b/libfprint/drivers/egismoc/egismoc.c @@ -386,23 +386,18 @@ egismoc_exec_cmd (FpDevice *device, } static void -egismoc_set_print_data (FpPrint *print, - const guchar *device_print_id, - const gchar *user_id) +egismoc_set_print_data (FpPrint *print, + const gchar *device_print_id, + const gchar *user_id) { GVariant *print_id_var = NULL; GVariant *fpi_data = NULL; g_autofree gchar *fill_user_id = NULL; if (user_id) - { - fill_user_id = g_strdup (user_id); - } + fill_user_id = g_strdup (user_id); else - { - fill_user_id = g_new0 (gchar, EGISMOC_FINGERPRINT_DATA_SIZE + 1); - memcpy (fill_user_id, device_print_id, EGISMOC_FINGERPRINT_DATA_SIZE); - } + fill_user_id = g_strndup (device_print_id, EGISMOC_FINGERPRINT_DATA_SIZE); fpi_print_fill_from_user_id (print, fill_user_id); @@ -465,8 +460,8 @@ egismoc_list_fill_enrolled_ids_cb (FpDevice *device, pos < length_in - EGISMOC_LIST_RESPONSE_SUFFIX_SIZE; pos += EGISMOC_FINGERPRINT_DATA_SIZE, self->enrolled_num++) { - g_autofree guchar *print_id = g_new0 (guchar, EGISMOC_FINGERPRINT_DATA_SIZE + 1); - memcpy (print_id, buffer_in + pos, EGISMOC_FINGERPRINT_DATA_SIZE); + g_autofree gchar *print_id = g_strndup ((gchar *) buffer_in + pos, + EGISMOC_FINGERPRINT_DATA_SIZE); fp_dbg ("Device fingerprint %0d: %.*s", self->enrolled_num, EGISMOC_FINGERPRINT_DATA_SIZE, print_id); g_ptr_array_add (self->enrolled_ids, g_steal_pointer (&print_id)); @@ -1012,7 +1007,7 @@ egismoc_enroll_run_state (FpiSsm *ssm, EnrollPrint *enroll_print = fpi_ssm_get_data (ssm); g_autofree guchar *payload = NULL; gsize payload_length = 0; - g_autofree guchar *device_print_id = NULL; + g_autofree gchar *device_print_id = NULL; g_autofree gchar *user_id = NULL; switch (fpi_ssm_get_cur_state (ssm)) @@ -1092,8 +1087,7 @@ egismoc_enroll_run_state (FpiSsm *ssm, user_id = fpi_print_generate_user_id (enroll_print->print); fp_dbg ("New fingerprint ID: %s", user_id); - device_print_id = g_new0 (guchar, EGISMOC_FINGERPRINT_DATA_SIZE); - memcpy (device_print_id, user_id, MIN (strlen (user_id), EGISMOC_FINGERPRINT_DATA_SIZE)); + device_print_id = g_strndup (user_id, EGISMOC_FINGERPRINT_DATA_SIZE); egismoc_set_print_data (enroll_print->print, device_print_id, user_id); /* create new dynamic payload of cmd_new_print_prefix + device_print_id */ @@ -1143,7 +1137,7 @@ egismoc_identify_check_cb (FpDevice *device, { fp_dbg ("Identify check callback"); FpiDeviceEgisMoc *self = FPI_DEVICE_EGISMOC (device); - guchar device_print_id[EGISMOC_FINGERPRINT_DATA_SIZE]; + gchar device_print_id[EGISMOC_FINGERPRINT_DATA_SIZE]; FpPrint *print = NULL; FpPrint *verify_print = NULL; GPtrArray *prints; @@ -1330,8 +1324,9 @@ egismoc_fw_version_cb (FpDevice *device, { fp_dbg ("Firmware version callback"); FpiDeviceEgisMoc *self = FPI_DEVICE_EGISMOC (device); - g_autofree guchar *fw_version = NULL; + g_autofree gchar *fw_version = NULL; gsize prefix_length; + guchar *fw_version_start; gsize fw_version_length; if (error) @@ -1360,13 +1355,9 @@ egismoc_fw_version_cb (FpDevice *device, * all but the last 2 bytes as the FW Version */ prefix_length = egismoc_read_prefix_len + 2 + 3 + 1; + fw_version_start = buffer_in + prefix_length; fw_version_length = length_in - prefix_length - rsp_fw_version_suffix_len; - fw_version = g_new0 (guchar, fw_version_length + 1); - - memcpy (fw_version, - buffer_in + prefix_length, - length_in - prefix_length - rsp_fw_version_suffix_len); - *(fw_version + fw_version_length) = '\0'; + fw_version = g_strndup ((gchar *) fw_version_start, fw_version_length); fp_info ("Device firmware version is %s", fw_version); |