[lxc-devel] [PATCH] lxc-user-nic: handle failure in create_nic
Serge Hallyn
serge.hallyn at ubuntu.com
Mon Apr 28 21:00:06 UTC 2014
Failures were being ignored, leading up to an eventual segfault.
Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>
---
src/lxc/lxc_user_nic.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/lxc/lxc_user_nic.c b/src/lxc/lxc_user_nic.c
index 0e66549..1105b3d 100644
--- a/src/lxc/lxc_user_nic.c
+++ b/src/lxc/lxc_user_nic.c
@@ -286,13 +286,16 @@ out_del:
* *dest will container the name (vethXXXXXX) which is attached
* on the host to the lxc bridge
*/
-static void get_new_nicname(char **dest, char *br, int pid, char **cnic)
+static bool get_new_nicname(char **dest, char *br, int pid, char **cnic)
{
char template[IFNAMSIZ];
snprintf(template, sizeof(template), "vethXXXXXX");
*dest = lxc_mkifname(template);
- create_nic(*dest, br, pid, cnic);
+ if (!create_nic(*dest, br, pid, cnic)) {
+ return false;
+ }
+ return true;
}
static bool get_nic_from_line(char *p, char **nic)
@@ -419,7 +422,8 @@ static bool get_nic_if_avail(int fd, char *me, int pid, char *intype, char *br,
return false;
}
- get_new_nicname(nicname, br, pid, cnic);
+ if (!get_new_nicname(nicname, br, pid, cnic))
+ return false;
/* me ' ' intype ' ' br ' ' *nicname + '\n' + '\0' */
slen = strlen(me) + strlen(intype) + strlen(br) + strlen(*nicname) + 5;
newline = alloca(slen);
--
1.9.1
More information about the lxc-devel
mailing list