Thanks to Petter for doing a very good job on cleaning up the mess I offered him as a patch.
But one last thing is not correct. While negating the logical expression in the if block I did miss the second part. Here is the correct patch: --- libpam-foreground-0.2.orig/pam_foreground.c 2006-01-24 02:00:42.000000000 +0100 +++ libpam-foreground-0.2/pam_foreground.c 2007-07-07 00:35:29.968989507 +0200 @@ -76,6 +76,7 @@ struct vt_stat vtstat; size_t len; int retval; + void *rhost=NULL; retval = pam_get_user(pamh, &user, NULL); if (retval != PAM_SUCCESS) { @@ -83,6 +84,17 @@ return retval; } + retval = pam_get_item(pamh, PAM_RHOST, (const void **)&rhost); + if (retval != PAM_SUCCESS) { + D(("get remote host returned error: %s", pam_strerror(pamh,retval))); + return retval; + } + + /* Skip lockfile creation when non-local */ + if (rhost != NULL && *(char *)rhost != '\0') { + return PAM_SUCCESS; + } + if (stat (AUTH_DIR, &finfo)) { if (errno != ENOENT) { D(("Can't access %s - %s\n", AUTH_DIR,
signature.asc
Description: Digital signature