]> granicus.if.org Git - sysstat/commitdiff
Close file descriptor in read_uptime() function (file rd_stats.c).
authorSebastien Godard <sysstat@orange.fr>
Thu, 5 May 2011 09:07:43 +0000 (11:07 +0200)
committerSebastien Godard <sysstat@orange.fr>
Thu, 5 May 2011 09:07:43 +0000 (11:07 +0200)
File descriptor was not closed when /proc/uptime file happened to be empty.

Mail from Ivana Varekova (varekova@redhat.com) 02/05/2011:
Subject: feature request: Resizing device column in iostat to size of larges lvm device name

Hello,
I'm sending three patches against sysstat-10.0.0:
[...]
* sysstat_2.patch
  fix rear_uptime bug - this function does not close the file descriptor which is open in it in the special situation
[...]

If you need a clarification to arbitrary of them please sent me an e-mail.
Ivana

CHANGES
rd_stats.c

diff --git a/CHANGES b/CHANGES
index fb7b0906665e7fea783dc9340b62e3063a1a41f8..85326a3e3f4674eaa932fb901f37c9ff5dc0ce77 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
 Changes:
 
 xxxx/xx/xx: Version 10.0.1 - Sebastien Godard (sysstat <at> orange.fr)
+       * [Ivana Varekova]: Close file descriptor in read_uptime()
+         function (file rd_stats.c).
        * NLS updated. Esperanto translation added.
 
 2011/03/15: Version 10.0.0 - Sebastien Godard (sysstat <at> orange.fr)
@@ -379,7 +381,7 @@ xxxx/xx/xx: Version 10.0.1 - Sebastien Godard (sysstat <at> orange.fr)
          done in one place (common function used by iostat, sar, sadf).
        * All sysstat commands are made consistent with how parameters
          are interpreted: "COMMAND <interval>" now generates a report
-         continusouly, "COMMAND <interval> 0" causes an error,
+         continuously, "COMMAND <interval> 0" causes an error,
          "COMMAND 0" displays a report since system startup
          [DEBIAN bug#475707].
        * Changed XML output for processes and context switches displayed
index cb3b46fb7feb82cf263ffa84bcde094e0025451a..41a511ca26f6accc128d8900a36db87063bb53a4 100644 (file)
@@ -1759,8 +1759,10 @@ void read_uptime(unsigned long long *uptime)
        if ((fp = fopen(UPTIME, "r")) == NULL)
                return;
 
-       if (fgets(line, 128, fp) == NULL)
+       if (fgets(line, 128, fp) == NULL) {
+               fclose(fp);
                return;
+       }
 
        sscanf(line, "%lu.%lu", &up_sec, &up_cent);
        *uptime = (unsigned long long) up_sec * HZ +