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
This commit is contained in:
Lubomir Rintel 2014-11-10 18:48:37 +01:00
parent 8c32ea916b
commit 2f82bf537b

View file

@ -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;