--- thinkfinger-0.3+r118.orig/pam/pam_thinkfinger.c +++ thinkfinger-0.3+r118/pam/pam_thinkfinger.c @@ -174,6 +174,7 @@ pam_thinkfinger->swipe_retval = PAM_AUTH_ERR; pam_thinkfinger_log (pam_thinkfinger, LOG_NOTICE, "User '%s' verification failed (0x%x).", pam_thinkfinger->user, tf_state); + goto out; } ret = uinput_cr (&pam_thinkfinger->uinput_fd); @@ -181,6 +182,8 @@ pam_thinkfinger_log (pam_thinkfinger, LOG_ERR, "Could not send carriage return via uinput: %s.", strerror (ret)); + out: + pam_thinkfinger_log (pam_thinkfinger, LOG_NOTICE, "%s returning '%d': %s.", __FUNCTION__, pam_thinkfinger->swipe_retval, pam_thinkfinger->swipe_retval ? pam_strerror (pam_thinkfinger->pamh, pam_thinkfinger->swipe_retval) : "success"); --- thinkfinger-0.3+r118.orig/pam/pam_thinkfinger-uinput.c +++ thinkfinger-0.3+r118/pam/pam_thinkfinger-uinput.c @@ -95,6 +95,7 @@ /* our single key keyboard */ i = ioctl (*fd, UI_SET_EVBIT, EV_KEY) < 0; i |= ioctl (*fd, UI_SET_KEYBIT, KEY_ENTER) < 0; + i |= ioctl (*fd, UI_SET_KEYBIT, KEY_A) < 0; if (write (*fd, &device, device_size) != device_size) { retval = errno;