Fix some coverity issues
[platform/core/connectivity/stc-manager.git] / src / helper / helper-nfacct-rule.c
index 24376f3..070052b 100755 (executable)
@@ -511,14 +511,33 @@ static stc_error_e exec_iptables_cmd(nfacct_rule_s *rule)
        iptables_rule.d_iprange_type = rule->dst_iprange_type;
 
        /* specify source and destination ip address if any */
-       if (rule->src_ip1)
-               inet_aton(rule->src_ip1, &iptables_rule.s_ip1);
-       if (rule->src_ip2)
-               inet_aton(rule->src_ip2, &iptables_rule.s_ip2);
-       if (rule->dst_ip1)
-               inet_aton(rule->dst_ip1, &iptables_rule.d_ip1);
-       if (rule->dst_ip2)
-               inet_aton(rule->dst_ip2, &iptables_rule.d_ip2);
+       if (rule->src_ip1) {
+               if (!inet_aton(rule->src_ip1, &iptables_rule.s_ip1)) {
+                       ret = STC_ERROR_INVALID_PARAMETER;
+                       goto free;
+               }
+       }
+
+       if (rule->src_ip2) {
+               if (!inet_aton(rule->src_ip2, &iptables_rule.s_ip2)) {
+                       ret = STC_ERROR_INVALID_PARAMETER;
+                       goto free;
+               }
+       }
+
+       if (rule->dst_ip1) {
+               if (!inet_aton(rule->dst_ip1, &iptables_rule.d_ip1)) {
+                       ret = STC_ERROR_INVALID_PARAMETER;
+                       goto free;
+               }
+       }
+
+       if (rule->dst_ip2) {
+               if (!inet_aton(rule->dst_ip2, &iptables_rule.d_ip2)) {
+                       ret = STC_ERROR_INVALID_PARAMETER;
+                       goto free;
+               }
+       }
 
        if (rule->action == NFACCT_ACTION_DELETE) {
                /* delete interface rule */
@@ -528,6 +547,7 @@ static stc_error_e exec_iptables_cmd(nfacct_rule_s *rule)
                ret = iptables_add(&iptables_rule, iptype);
        }
 
+free:
        g_free(iptables_rule.nfacct_name);
        g_free(iptables_rule.ifname);
        g_free(iptables_rule.target);