[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