]> git.puffer.fish Git - mirror/frr.git/commitdiff
*: Clean up call into inet_aton
authorDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 13 Jun 2017 17:10:32 +0000 (13:10 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 13 Jun 2017 17:10:32 +0000 (13:10 -0400)
In the few places where we were not checking the return code
for inet_aton, do so.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
bgpd/bgp_routemap.c
eigrpd/eigrpd.c
ospfclient/ospfclient.c
ospfd/ospf_ri.c
zebra/client_main.c

index 6c6b622626f9d44aa2a6635e5d1b63a2240580e6..3cf0d846841c8eebf6beb3f230feed1cc22c2cf1 100644 (file)
@@ -2151,13 +2151,18 @@ route_set_aggregator_as_compile (const char *arg)
   struct aggregator *aggregator;
   char as[10];
   char address[20];
+  int ret;
 
   aggregator = XCALLOC (MTYPE_ROUTE_MAP_COMPILED, sizeof (struct aggregator));
   sscanf (arg, "%s %s", as, address);
 
   aggregator->as = strtoul (as, NULL, 10);
-  inet_aton (address, &aggregator->address);
-
+  ret = inet_aton (address, &aggregator->address);
+  if (ret == 0)
+    {
+      XFREE (MTYPE_ROUTE_MAP_COMPILED, aggregator);
+      return NULL;
+    }
   return aggregator;
 }
 
index 93a69b776bf413223262da6b4149e00f73e934d6..a0ead05224acfbef6c208c903faa716ef90da9d2 100644 (file)
@@ -186,7 +186,7 @@ eigrp_new (const char *AS)
   eigrp->topology_table = eigrp_topology_new();
 
   eigrp->neighbor_self = eigrp_nbr_new(NULL);
-  inet_aton("0.0.0.0", &eigrp->neighbor_self->src);
+  eigrp->neighbor_self->src.s_addr = INADDR_ANY;
 
   eigrp->variance = EIGRP_VARIANCE_DEFAULT;
   eigrp->max_paths = EIGRP_MAX_PATHS_DEFAULT;
index 195fd5b5a05cab72cbf0c8bf9484cc2c2eda2cf8..d8d0fe8d470cc22e14c2bb5d707837c7223aa602 100644 (file)
@@ -94,7 +94,12 @@ lsa_delete (struct thread *t)
 
   oclient = THREAD_ARG (t);
 
-  inet_aton (args[6], &area_id);
+  rc = inet_aton (args[6], &area_id);
+  if (rc <= 0)
+    {
+      printf("Address Specified: %s is invalid\n", args[6]);
+      return rc;
+    }
 
   printf ("Deleting LSA... ");
   rc = ospf_apiclient_lsa_delete (oclient, 
@@ -123,8 +128,19 @@ lsa_inject (struct thread *t)
 
   cl = THREAD_ARG (t);
 
-  inet_aton (args[5], &ifaddr);
-  inet_aton (args[6], &area_id);
+  rc = inet_aton (args[5], &ifaddr);
+  if (rc <= 0)
+    {
+      printf ("Ifaddr specified %s is invalid\n", args[5]);
+      return rc;
+    }
+
+  rc = inet_aton (args[6], &area_id);
+  if (rc <= 0)
+    {
+      printf( "Area ID specified %s is invalid\n", args[6]);
+      return rc;
+    }
   lsa_type = atoi (args[2]);
   opaque_type = atoi (args[3]);
   opaque_id = atoi (args[4]);
index 4723f4a9197669c2a4ed4e71d721bddafd372cfd..bd2506d2d43daa1792c1dddde5c6c175b523d59a 100644 (file)
@@ -1192,7 +1192,11 @@ DEFUN (router_info,
   /* Check and get Area value if present */
   if (area)
     {
-      inet_aton (area, &OspfRI.area_id);
+      if (!inet_aton (area, &OspfRI.area_id))
+        {
+          vty_out (vty, "Please specifya valid Area ID%s", VTY_NEWLINE);
+          return CMD_WARNING;
+        }
       scope = OSPF_OPAQUE_AREA_LSA;
     }
   else
index c9d738bb0807d4af3a34433476f7b3d568fd1cb1..0e77ea4aecbc56cebb3c055b0f968c40695d0950 100644 (file)
@@ -48,7 +48,12 @@ zebra_test_ipv4 (int command, int type, char *prefix, char *gateway,
   struct in_addr *gpnt;
 
   str2prefix_ipv4 (prefix, &p);
-  inet_aton (gateway, &gate);
+  if (!inet_aton (gateway, &gate))
+    {
+      printf("Gateway specified: %s is illegal\n", gateway);
+      return;
+    }
+
   gpnt = &gate;
 
   api.vrf_id = VRF_DEFAULT;