Snap for 7637344 from b7b2241dec3676319228f1f4f88558c53d1f7a7b to sc-d1-release

Change-Id: Iaa85ca0562def67f5ecbc8363b489e85f7642466
diff --git a/fingerprint/fingerprint.c b/fingerprint/fingerprint.c
index d89145c..dff5d98 100644
--- a/fingerprint/fingerprint.c
+++ b/fingerprint/fingerprint.c
@@ -267,13 +267,6 @@
     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 @@
         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 @@
         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);