summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-08-13 01:00:50 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-08-13 01:00:50 +0000
commitaa8767226a14528ef0ca0f431119875b714adb4f (patch)
tree4adc9820e77119d00b4c46d80ecf9f5e62e2ecf6
parent9eeac29404ed13c9d44e09f7408b68cac7ae3b1f (diff)
parentb7b2241dec3676319228f1f4f88558c53d1f7a7b (diff)
downloadgoldfish-android12-d1-s6-release.tar.gz
Change-Id: Iaa85ca0562def67f5ecbc8363b489e85f7642466
-rw-r--r--fingerprint/fingerprint.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/fingerprint/fingerprint.c b/fingerprint/fingerprint.c
index d89145c0..dff5d98c 100644
--- a/fingerprint/fingerprint.c
+++ b/fingerprint/fingerprint.c
@@ -267,13 +267,6 @@ static int fingerprint_set_active_group(struct fingerprint_device *device, uint3
uint64_t authenticator_id = 0;
loadFingerprints(&qdev->listener);
loadAuthenticatorId(qdev->listener.authid_filename, &authenticator_id);
- if (authenticator_id == 0) {
- // firs time, create an authenticator id
- authenticator_id = get_64bit_rand();
- // save it to disk
- saveAuthenticatorId(qdev->listener.authid_filename, authenticator_id);
- }
-
qdev->authenticator_id = authenticator_id;
pthread_mutex_unlock(&qdev->lock);
@@ -538,6 +531,22 @@ static int fingerprint_remove(struct fingerprint_device *device,
device->notify(&msg);
}
+ // where there are no enrollment, reset authenticator id to 0
+ bool has_fingerprints = false;
+ for (idx = 0; idx < MAX_NUM_FINGERS; idx++) {
+ uint32_t theFid = qdev->listener.fingerid[idx];
+ if (theFid != 0) {
+ has_fingerprints = true;
+ break;
+ }
+ }
+
+ if (!has_fingerprints) {
+ qdev->authenticator_id = 0;
+ saveAuthenticatorId(qdev->listener.authid_filename, qdev->authenticator_id);
+ }
+
+
return 0;
}
@@ -637,6 +646,10 @@ static void send_enroll_notice(qemu_fingerprint_device_t* qdev, int fid) {
qdev->listener.secureid[idx] = qdev->secure_user_id;
qdev->listener.fingerid[idx] = fid;
saveFingerprint(&qdev->listener, idx);
+ uint64_t authenticator_id = get_64bit_rand();
+ // save it to disk
+ saveAuthenticatorId(qdev->listener.authid_filename, authenticator_id);
+ qdev->authenticator_id = authenticator_id;
qdev->listener.state = STATE_IDLE;
}
pthread_mutex_unlock(&qdev->lock);