return 0;
}
-static struct lxc_netdev *network_netdev(const char *key, char *value,
- struct lxc_conf *lxc_conf)
+static struct lxc_netdev *network_netdev(const char *key, const char *value,
+ struct lxc_list *network)
{
- struct lxc_list *network = &lxc_conf->network;
struct lxc_netdev *netdev;
if (lxc_list_empty(network)) {
- ERROR("network is not created for '%s' option", value);
+ ERROR("network is not created for '%s' = '%s' option",
+ key, value);
return NULL;
}
netdev = lxc_list_first_elem(network);
if (!netdev) {
- ERROR("no network defined for '%s' option", value);
+ ERROR("no network device defined for '%s' = '%s' option",
+ key, value);
return NULL;
}
}
*valuep = strdup(value);
+ if (!*valuep) {
+ ERROR("failed to dup string '%s'", value);
+ return -1;
+ }
return 0;
}
{
struct lxc_netdev *netdev;
- netdev = network_netdev(key, value, lxc_conf);
+ netdev = network_netdev(key, value, &lxc_conf->network);
if (!netdev)
return -1;
{
struct lxc_netdev *netdev;
- netdev = network_netdev(key, value, lxc_conf);
+ netdev = network_netdev(key, value, &lxc_conf->network);
if (!netdev)
return -1;
{
struct lxc_netdev *netdev;
- netdev = network_netdev(key, value, lxc_conf);
+ netdev = network_netdev(key, value, &lxc_conf->network);
if (!netdev)
return -1;
{
struct lxc_netdev *netdev;
- netdev = network_netdev(key, value, lxc_conf);
+ netdev = network_netdev(key, value, &lxc_conf->network);
if (!netdev)
return -1;
netdev->hwaddr = strdup(value);
+ if (!netdev->hwaddr) {
+ SYSERROR("failed to dup string '%s'", value);
+ return -1;
+ }
return 0;
}
{
struct lxc_netdev *netdev;
- netdev = network_netdev(key, value, lxc_conf);
+ netdev = network_netdev(key, value, &lxc_conf->network);
if (!netdev)
return -1;
netdev->mtu = strdup(value);
+ if (!netdev->mtu) {
+ SYSERROR("failed to dup string '%s'", value);
+ return -1;
+ }
return 0;
}
struct lxc_list *list;
char *cursor, *slash, *addr = NULL, *bcast = NULL, *prefix = NULL;
- netdev = network_netdev(key, value, lxc_conf);
+ netdev = network_netdev(key, value, &lxc_conf->network);
if (!netdev)
return -1;
char *slash;
char *netmask;
- netdev = network_netdev(key, value, lxc_conf);
+ netdev = network_netdev(key, value, &lxc_conf->network);
if (!netdev)
return -1;