Code

check_disk: rerpopulate the mount list after doing a stat() on paths specified with...
authorThomas Guyot-Sionnest <dermoth@users.sourceforge.net>
Wed, 19 Nov 2008 05:59:22 +0000 (05:59 +0000)
committerThomas Guyot-Sionnest <dermoth@users.sourceforge.net>
Wed, 19 Nov 2008 05:59:22 +0000 (05:59 +0000)
NB: There's a memory leak here - properly freeing the mount list would invlove
    much more work - there's many other places where leaks can happen so it
    should be a project on its own.

git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@2085 f882894a-f735-0410-b71e-b25c423dba1c

NEWS
THANKS.in
lib/utils_disk.c
plugins/check_disk.c

diff --git a/NEWS b/NEWS
index 438ab675d21780ed418393a4d4e34f62342f891d..5149f913a8a8ec5ca53554c5046edbb7c30f5511 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,7 @@ This file documents the major additions and syntax changes between releases.
        Add missing long options for check_nt (for use with extra-opts)
        check_icmp now reports min and max round trip time perfdata (Steve Rader)
        Fixed bug where additional headers with redirection caused a segfault (Dieter Van de Walle - 2089159)
+       check_disk: make autofs mount paths specified with -p before we determing the mount list (Erik Welch)
 
 1.4.13 25th Sept 2008
        Fix Debian bug #460097: check_http --max-age broken (Hilko Bengen)
index 072cff054750f58aa4b0fbde20f1cf00ceb23d2b..7784be9add611cc7efe300c561a98c017897b63a 100644 (file)
--- a/THANKS.in
+++ b/THANKS.in
@@ -243,3 +243,4 @@ Olivier 'Babar' Raginel
 Steve Rader
 Dieter Van de Walle
 Jan Lipphaus
+Erik Welch
index e22d66807176cb7a37e11aa7f0074599ea556c74..3ce4d47d1d8797bf51da93056d8502e4c56a130d 100644 (file)
@@ -77,19 +77,18 @@ np_add_parameter(struct parameter_list **list, const char *name)
 struct parameter_list *
 np_del_parameter(struct parameter_list *item, struct parameter_list *prev)
 {
-       struct parameter_list *next;
-       if (item->name_next)
-               next = item->name_next;
-       else
-               next = NULL;
+  struct parameter_list *next;
 
-       
-       free(item);
-       if (prev)
-         prev->name_next = next;
+  if (item->name_next)
+    next = item->name_next;
+  else
+    next = NULL;
 
-       return next;
+  free(item);
+  if (prev)
+    prev->name_next = next;
 
+  return next;
 }
 
   
index 2f8afa6c90e62bc0d982330611020d620ca9112e..f0950c95762710dc33971555c050f56de7e3b673 100644 (file)
@@ -118,9 +118,6 @@ enum
  #pragma alloca
 #endif
 
-/* Linked list of mounted filesystems. */
-static struct mount_entry *mount_list;
-
 int process_arguments (int, char **);
 void print_path (const char *mypath);
 void set_all_thresholds (struct parameter_list *path);
@@ -639,8 +636,12 @@ process_arguments (int argc, char **argv)
       }
       se->group = group;
       set_all_thresholds(se);
-      np_set_best_match(se, mount_list, exact_match);
+
+      /* With autofs, it is required to stat() the path before populating the mount_list */
       stat_path(se);
+      mount_list = read_file_system_list (0);
+      np_set_best_match(se, mount_list, exact_match);
+
       path_selected = TRUE;
       break;
     case 'x':                 /* exclude path or partition */
@@ -757,7 +758,6 @@ process_arguments (int argc, char **argv)
     case 'C':
        /* add all mount entries to path_select list if no partitions have been explicitly defined using -p */
        if (path_selected == FALSE) {
-         struct mount_entry *me;
          struct parameter_list *path;
          for (me = mount_list; me; me = me->me_next) {
            if (! (path = np_find_parameter(path_select_list, me->me_mountdir)))