File pam_tally-fdleak.diff of Package pam

2008-09-25  Tomas Mraz <t8m@centrum.cz>

        * modules/pam_tally/pam_tally.c(get_tally): Fix syslog message.
        (tally_check): Open faillog read only. Close file descriptor.
        Fix typos in messages.

--- modules/pam_tally/pam_tally.c	9 Jul 2008 12:23:23 -0000	1.30
+++ modules/pam_tally/pam_tally.c	19 Sep 2008 12:29:21 -0000
@@ -350,7 +350,7 @@ get_tally(pam_handle_t *pamh, tally_t *t
     }
 
     if ( ! ( *TALLY = fopen(filename,(*tally!=TALLY_HI)?"r+":"r") ) ) {
-      pam_syslog(pamh, LOG_ALERT, "Error opening %s for update", filename);
+      pam_syslog(pamh, LOG_ALERT, "Error opening %s for %s", filename, *tally!=TALLY_HI?"update":"read");
 
 /* Discovering why account service fails: e/uid are target user.
  *
@@ -504,7 +504,7 @@ tally_check (time_t oldtime, pam_handle_
   tally_t
     deny          = opts->deny;
   tally_t
-    tally         = 0;  /* !TALLY_HI --> Log opened for update */
+    tally         = TALLY_HI;
   long
     lock_time     = opts->lock_time;
 
@@ -515,6 +515,10 @@ tally_check (time_t oldtime, pam_handle_
     i=get_tally(pamh, &tally, uid, opts->filename, &TALLY, fsp);
     if ( i != PAM_SUCCESS ) { RETURN_ERROR( i ); }
 
+    if ( TALLY != NULL ) {
+      fclose(TALLY);
+    }
+
     if ( !(opts->ctrl & OPT_MAGIC_ROOT) || getuid() ) {       /* magic_root skips tally check */
 
       /* To deny or not to deny; that is the question */
openSUSE Build Service is sponsored by