diff -u -r Linux-PAM-1.1.3.orig/modules/pam_listfile/pam_listfile.c Linux-PAM-1.1.3/modules/pam_listfile/pam_listfile.c
--- Linux-PAM-1.1.3.orig/modules/pam_listfile/pam_listfile.c	2009-12-08 15:41:41.000000000 +0100
+++ Linux-PAM-1.1.3/modules/pam_listfile/pam_listfile.c	2011-02-23 13:27:04.356265509 +0100
@@ -78,8 +78,14 @@
 	{
 	    const char *junk;
 
+	    /* option quiet has no value */
+	    if(!strcmp(argv[i],"quiet")) {
+		quiet = 1;
+		continue;
+	    }
+
 	    memset(mybuf,'\0',sizeof(mybuf));
-	    memset(myval,'\0',sizeof(mybuf));
+	    memset(myval,'\0',sizeof(myval));
 	    junk = strchr(argv[i], '=');
 	    if((junk == NULL) || (junk - argv[i]) >= (int) sizeof(mybuf)) {
 		pam_syslog(pamh,LOG_ERR, "Bad option: \"%s\"",
@@ -142,8 +148,6 @@
 		    apply_type=APPLY_TYPE_USER;
 		    strncpy(apply_val,myval,sizeof(apply_val)-1);
 		}
-	    } else if (!strcmp(mybuf,"quiet")) {
-		quiet = 1;
 	    } else {
 		free(ifname);
 		pam_syslog(pamh,LOG_ERR, "Unknown option: %s",mybuf);
@@ -283,7 +287,8 @@
 	     ifname, citem, citemp, sense);
 #endif
     if(lstat(ifname,&fileinfo)) {
-	pam_syslog(pamh,LOG_ERR, "Couldn't open %s",ifname);
+	if(!quiet)
+		pam_syslog(pamh,LOG_ERR, "Couldn't open %s",ifname);
 	free(ifname);
 	return onerr;
     }