Emulator Fingerprint: do not send invalid finger id
Fix regression, where MNC AVD can be unlocked using
un-enrolled touch ids.
bug:
https://code.google.com/p/android/issues/detail?id=188341
Change-Id: I541e77282259c41fbc31c47fc5f8e80df3470faf
diff --git a/fingerprint/fingerprint.c b/fingerprint/fingerprint.c
index baa7ad6..0c7585a 100644
--- a/fingerprint/fingerprint.c
+++ b/fingerprint/fingerprint.c
@@ -432,6 +432,17 @@
return 0;
}
+static bool is_valid_fid(qemu_fingerprint_device_t* qdev, int fid) {
+ int idx = 0;
+ if (0 == fid) { return false; }
+ for (idx = 0; idx < MAX_NUM_FINGERS; idx++) {
+ if (qdev->listener.authenid[idx] == fid) {
+ return true;
+ }
+ }
+ return false;
+}
+
static void send_scan_notice(qemu_fingerprint_device_t* qdev, int fid) {
ALOGD("----------------> %s ----------------->", __FUNCTION__);
@@ -443,7 +454,7 @@
// authenticated message
fingerprint_msg_t auth_msg = {0};
auth_msg.type = FINGERPRINT_AUTHENTICATED;
- auth_msg.data.authenticated.finger.fid = fid;
+ auth_msg.data.authenticated.finger.fid = is_valid_fid(qdev, fid) ? fid : 0;
auth_msg.data.authenticated.finger.gid = 0; // unused
auth_msg.data.authenticated.hat.version = HW_AUTH_TOKEN_VERSION;
auth_msg.data.authenticated.hat.authenticator_type =