]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
lxc-user-nic: handle failure in create_nic
authorSerge Hallyn <serge.hallyn@ubuntu.com>
Mon, 28 Apr 2014 20:52:08 +0000 (15:52 -0500)
committerSerge Hallyn <serge.hallyn@ubuntu.com>
Mon, 28 Apr 2014 21:16:08 +0000 (16:16 -0500)
Failures were being ignored, leading up to an eventual segfault.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
src/lxc/lxc_user_nic.c

index 0e665495b90bb34eaf22b22e8f838c3632eff06e..1105b3d0eaf6771d6d182489e0b39aba307c15ba 100644 (file)
@@ -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);