From: Zbigniew Jędrzejewski-Szmek Date: Sun, 3 Aug 2014 05:28:21 +0000 (-0400) Subject: nspawn: fix truncation of machine names in interface names X-Git-Tag: v216~289 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=4212a3375e03fd12cb407b34cab59dbe4ed9f4eb;p=elogind.git nspawn: fix truncation of machine names in interface names Based on patch by Michael Marineau : When deriving the network interface name from machine name strncpy was not properly null terminating the string and the maximum string size as returned by strlen() is actually IFNAMSIZ-1, not IFNAMSIZ. --- diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index ddf1c371a..b118c739e 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1659,11 +1659,8 @@ static int setup_veth(pid_t pid, char iface_name[IFNAMSIZ], int *ifi) { /* Use two different interface name prefixes depending whether * we are in bridge mode or not. */ - if (arg_network_bridge) - memcpy(iface_name, "vb-", 3); - else - memcpy(iface_name, "ve-", 3); - strncpy(iface_name+3, arg_machine, IFNAMSIZ - 3); + snprintf(iface_name, IFNAMSIZ, "%s-%s", + arg_network_bridge ? "vb" : "ve", arg_machine); r = get_mac(&mac); if (r < 0) {