if (r == 0)
break;
- if (!GREEDY_REALLOC(routes, size + 1))
- return -ENOMEM;
+ struct sd_dhcp_route route = {};
tok = word;
continue;
*tok_end = '\0';
- r = inet_aton(tok, &routes[size].dst_addr);
+ r = inet_aton(tok, &route.dst_addr);
if (r == 0)
continue;
if (r < 0 || n > 32)
continue;
- routes[size].dst_prefixlen = (uint8_t) n;
+ route.dst_prefixlen = (uint8_t) n;
tok = tok_end + 1;
/* get the gateway */
- r = inet_aton(tok, &routes[size].gw_addr);
+ r = inet_aton(tok, &route.gw_addr);
if (r == 0)
continue;
- size++;
+ if (!GREEDY_REALLOC(routes, size + 1))
+ return -ENOMEM;
+
+ routes[size++] = route;
}
*ret_size = size;