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