summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2014-11-10 18:48:37 +0100
committerLubomir Rintel <lkundrak@v3.sk>2015-01-09 12:13:53 +0100
commit2f82bf537bb8179504cbe0a01fe94783a817a89f (patch)
tree0fa4deaca034b1f27f9650f7e3059c0063354554
parent8c32ea916ba0c86c4c50d6d4c7b6021adfbfdf02 (diff)
downloadNetworkManager-2f82bf537bb8179504cbe0a01fe94783a817a89f.tar.gz
bridge: Properly check range of STP properties (rh #1160815)
If zero is out of range, only allow it when STP is disabled. https://bugzilla.redhat.com/show_bug.cgi?id=1160815
-rw-r--r--libnm-core/nm-setting-bridge.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libnm-core/nm-setting-bridge.c b/libnm-core/nm-setting-bridge.c
index 51c6ac5a03..d00271b71a 100644
--- a/libnm-core/nm-setting-bridge.c
+++ b/libnm-core/nm-setting-bridge.c
@@ -196,10 +196,14 @@ static inline gboolean
check_range (guint32 val,
guint32 min,
guint32 max,
+ gboolean zero,
const char *prop,
GError **error)
{
- if ((val != 0) && (val < min || val > max)) {
+ if (zero && val == 0)
+ return TRUE;
+
+ if (val < min || val > max) {
g_set_error (error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -228,6 +232,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
if (!check_range (priv->forward_delay,
BR_MIN_FORWARD_DELAY,
BR_MAX_FORWARD_DELAY,
+ !priv->stp,
NM_SETTING_BRIDGE_FORWARD_DELAY,
error))
return FALSE;
@@ -235,6 +240,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
if (!check_range (priv->hello_time,
BR_MIN_HELLO_TIME,
BR_MAX_HELLO_TIME,
+ !priv->stp,
NM_SETTING_BRIDGE_HELLO_TIME,
error))
return FALSE;
@@ -242,6 +248,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
if (!check_range (priv->max_age,
BR_MIN_MAX_AGE,
BR_MAX_MAX_AGE,
+ !priv->stp,
NM_SETTING_BRIDGE_MAX_AGE,
error))
return FALSE;
@@ -249,6 +256,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
if (!check_range (priv->ageing_time,
BR_MIN_AGEING_TIME,
BR_MAX_AGEING_TIME,
+ !priv->stp,
NM_SETTING_BRIDGE_AGEING_TIME,
error))
return FALSE;