From dfb24296687386d94f21f0488a9e2f3bcda89549 Mon Sep 17 00:00:00 2001 From: Niraj Kumar Goit Date: Mon, 17 Sep 2018 16:37:39 +0530 Subject: [PATCH] Fix coverity(1025915) issue. Added check on prefix length to fix bad bit shift issue. Change-Id: I9402ef63b03f7e63a1a54d954c6f74e42d460330 Signed-off-by: Niraj Kumar Goit --- src/wifi-config.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/wifi-config.c b/src/wifi-config.c index 3b01143..dd90001 100755 --- a/src/wifi-config.c +++ b/src/wifi-config.c @@ -368,10 +368,12 @@ static gboolean _load_configuration(const gchar *config_id, struct wifi_config * DBG("g_key_file_get_integer failed error[%d: %s]", error->code, error->message); g_error_free(error); } else { - addr = 0xffffffff << (32 - prefix_len); - netmask.s_addr = htonl(addr); - mask = inet_ntoa(netmask); - config->ip_info->subnet_mask = g_strdup(mask); + if (prefix_len > 0 && prefix_len < 32) { + addr = 0xffffffff << (32 - prefix_len); + netmask.s_addr = htonl(addr); + mask = inet_ntoa(netmask); + config->ip_info->subnet_mask = g_strdup(mask); + } if (config->ip_info->subnet_mask) DBG("IPv4.SubnetMask:%s", config->ip_info->subnet_mask); } @@ -1295,9 +1297,10 @@ gboolean handle_save_configuration(Wifi *wifi, GDBusMethodInvocation *context, if (conf->ip_info->subnet_mask != NULL) { unsigned char prefix_len; prefix_len = __netconfig_convert_netmask_to_prefixlen( - conf->ip_info->subnet_mask); - g_key_file_set_integer(keyfile, group_name, - WIFI_CONFIG_IPV4_SUBNET_MASK, prefix_len); + conf->ip_info->subnet_mask); + if (prefix_len > 0 && prefix_len < 32) + g_key_file_set_integer(keyfile, group_name, + WIFI_CONFIG_IPV4_SUBNET_MASK, prefix_len); } if (conf->ip_info->gateway_address != NULL) -- 2.7.4