From 2f82bf537bb8179504cbe0a01fe94783a817a89f Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 10 Nov 2014 18:48:37 +0100 Subject: 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 --- libnm-core/nm-setting-bridge.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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; -- cgit v1.2.1