Hi,

I'm using libfprint 0.1.0-pre2 with fprintd in Fedora 11.

I am having issues on two Fujitsu laptops with an AES2501 fingerprint
sensor.

This is what happens:

 - Once enrollment is completed, if I login, my fingerprint is asked
   (good).

 - If I swipe my finger normally (at the same speed as enrollment),
   everything is fine.

 - However, if I just use the tip of my finger to roll over the sensor
   quickly, gdm asks me: "Place your finger on the reader again".

 - At this point, I swipe my finger normally, and fprintd crashes.

I have a patch to solve the problem, but it is quite lacking as I do
not understand libfprint in its entirety.

Let me quote the patch inline, as it is very brief:

diff -ru libfprint-0.1.0-pre2.orig/libfprint/drivers/aes2501.c 
libfprint-0.1.0-pre2/libfprint/drivers/aes2501.c
--- libfprint-0.1.0-pre2.orig/libfprint/drivers/aes2501.c       2008-11-20 
06:53:01.000000000 -0800
+++ libfprint-0.1.0-pre2/libfprint/drivers/aes2501.c    2009-07-10 
01:21:12.000000000 -0700
@@ -355,6 +355,7 @@
        g_slist_foreach(aesdev->strips, (GFunc) g_free, NULL);
        g_slist_free(aesdev->strips);
        aesdev->strips = NULL;
+       aesdev->strips_len = 0;
 }
 
 
@@ -669,6 +671,10 @@
 
 static void start_capture(struct fp_img_dev *dev)
 {
+       if (dev->action_state == IMG_ACQUIRE_STATE_AWAIT_FINGER_OFF && 
dev->action_result) {
+               dev->action_state = IMG_ACQUIRE_STATE_AWAIT_IMAGE;
+               dev->action_result = 0;
+       }
        struct aes2501_dev *aesdev = dev->priv;
        struct fpi_ssm *ssm;
 

The first fragment fixes the crash that was happening in assemble() in
aes2501.c.  The number of stripes in aesdev->strips was different than
the number in aesdev->strips_len, because the counter was not reset
correctly to zero when the first swipe failed.

If you only apply the first fragment (ignore the second fragment for
now), and re-run the test, the following happens:

 - I type my login

 - I do an incorrect swipe with the tip of my finger.

 - fprint asks: "Place your finger on the reader again".

 - Now, whatever I do, even if I swipe my finger at the normal speed,
   fprint will always ask "Place your finger on the reader again".

This is where my lack of understanding kicks in:  it looks like
start_capture is called with leftover action_state and action_result
from the previous incorrect swipe, and that prevents any further swipe
from being accepted.

Please have a look into it.

Phil.
_______________________________________________
fprint mailing list
[email protected]
http://lists.reactivated.net/mailman/listinfo/fprint

Reply via email to