about summary refs log tree commit diff
path: root/src/settings/plugins/ifupdown/parser.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2012-08-07 22:16:03 +0200
committerMichael Biebl <biebl@debian.org>2012-08-07 22:16:03 +0200
commit8c98b34228abb4dfde822ad89106b4d8b2287639 (patch)
tree9305205f351759c51888cd9f7d75a2eb5b0e1431 /src/settings/plugins/ifupdown/parser.c
parent7f1d08cf21e97f5e60d4636bb1e6c287c34ee2df (diff)
Imported Upstream version 0.9.6.0 upstream/0.9.6.0
Diffstat (limited to 'src/settings/plugins/ifupdown/parser.c')
-rw-r--r--src/settings/plugins/ifupdown/parser.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/settings/plugins/ifupdown/parser.c b/src/settings/plugins/ifupdown/parser.c
index 6927f43f..88fb57b6 100644
--- a/src/settings/plugins/ifupdown/parser.c
+++ b/src/settings/plugins/ifupdown/parser.c
@@ -498,12 +498,20 @@ update_ip4_setting_from_if_block(NMConnection *connection,
 		/* mask/prefix */
 		netmask_v = ifparser_getkey (block, "netmask");
 		if (netmask_v) {
-			if (!inet_pton (AF_INET, netmask_v, &tmp_mask)) {
+			if (strlen (netmask_v) < 7) {
+				netmask_int = atoi (netmask_v);
+				if (netmask_int > 32) {
+					g_set_error (error, eni_plugin_error_quark (), 0,
+								"Invalid IPv4 netmask '%s'", netmask_v);
+					goto error;
+				}
+			} else if (!inet_pton (AF_INET, netmask_v, &tmp_mask)) {
 				g_set_error (error, eni_plugin_error_quark (), 0,
 						   "Invalid IPv4 netmask '%s'", netmask_v);
 				goto error;
+			} else {
+				netmask_int = nm_utils_ip4_netmask_to_prefix (tmp_mask.s_addr);
 			}
-			netmask_int = nm_utils_ip4_netmask_to_prefix (tmp_mask.s_addr);
 		}
 
 		/* gateway */