[Xfce4-commits] [panel-plugins/xfce4-hardware-monitor-plugin] 10/13: Detect invalid configuration for NetworkLoadMonitor interface type and direction

noreply at xfce.org noreply at xfce.org
Wed Aug 12 18:39:14 CEST 2015


This is an automated email from the git hooks/post-receive script.

omegaphil pushed a commit to branch master
in repository panel-plugins/xfce4-hardware-monitor-plugin.

commit c28c2d89afe73771938fb066121a34b9a7564943
Author: OmegaPhil <OmegaPhil at startmail.com>
Date:   Sat Aug 8 19:34:22 2015 +0100

    Detect invalid configuration for NetworkLoadMonitor interface type and direction
---
 src/monitor-impls.cpp |   32 ++++++++++++++++++++++++++++----
 src/monitor-impls.hpp |    5 ++++-
 2 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/src/monitor-impls.cpp b/src/monitor-impls.cpp
index cc35a77..552cd1b 100644
--- a/src/monitor-impls.cpp
+++ b/src/monitor-impls.cpp
@@ -889,13 +889,37 @@ void NetworkLoadMonitor::load(XfceRc *settings_ro)
   // Fetching assigned settings group
   Glib::ustring dir = get_settings_dir();
 
-  /* Loading settings - ensuring the settings are for the particular
-   * network monitor?? */
+  // Loading settings
   xfce_rc_set_group(settings_ro, dir.c_str());
   Glib::ustring type = xfce_rc_read_entry(settings_ro, "type", "");
-  InterfaceType inter_type = static_cast<InterfaceType>(xfce_rc_read_int_entry(settings_ro, "interface_type", int(ethernet_first)));
-  Direction inter_direction = static_cast<Direction>(xfce_rc_read_int_entry(settings_ro, "interface_direction" ,int(incoming_data)));
+  int inter_type_int = xfce_rc_read_int_entry(settings_ro, "interface_type",
+                                              int(ethernet_first));
+  int inter_direction_int = xfce_rc_read_int_entry(settings_ro,
+                                                   "interface_direction",
+                                                   int(all_data));
+
+  // Validating input - an enum does not enforce a range!!
+  InterfaceType inter_type;
+  if (inter_type_int < ethernet_first || inter_type_int >= NUM_INTERFACE_TYPES)
+  {
+    std::cerr << "NetworkLoadMonitor::load has read configuration specifying an "
+                 "invalid interface type: " << inter_type_int << "!\n";
+    inter_type = ethernet_first;
+  }
+  else
+    inter_type = static_cast<InterfaceType>(inter_type_int);
+
+  Direction inter_direction;
+  if (inter_direction_int < all_data || inter_direction_int >= NUM_DIRECTIONS)
+  {
+    std::cerr << "NetworkLoadMonitor::load has read configuration specifying an "
+                 "invalid direction: " << inter_direction_int << "!\n";
+    inter_direction = all_data;
+  }
+  else
+    inter_direction = static_cast<Direction>(inter_direction_int);
 
+  // Making sure the monitor type is correct to load further configuration??
   if (type == "network_load" && inter_type == interface_type
       && inter_direction == direction)
       max_value = xfce_rc_read_int_entry(settings_ro, "max", 0);
diff --git a/src/monitor-impls.hpp b/src/monitor-impls.hpp
index 66bde2d..753b1a3 100644
--- a/src/monitor-impls.hpp
+++ b/src/monitor-impls.hpp
@@ -162,7 +162,10 @@ class NetworkLoadMonitor: public Monitor
 {
 public:
   enum Direction {
-    all_data, incoming_data, outgoing_data
+    all_data,
+    incoming_data,
+    outgoing_data,
+    NUM_DIRECTIONS
   };
 
   /* There haven't been many different interfaces commonly used on machines,

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list