[lxc-devel] [lxd/master] forknet: add "--" to not misinterpret negative integers as flags

brauner on Github lxc-bot at linuxcontainers.org
Tue May 26 13:20:58 UTC 2020


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 379 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200526/997cbe6c/attachment.bin>
-------------- next part --------------
From d40657763449bb1ebe9a7f12fd50f88f61367ee5 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Tue, 26 May 2020 15:19:18 +0200
Subject: [PATCH] forknet: add "--" to not misinterpret negative integers as
 flags

Closes #7429.
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
 lxd/instance/drivers/driver_lxc.go | 9 +++++----
 lxd/main_forknet.go                | 9 ++++++---
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/lxd/instance/drivers/driver_lxc.go b/lxd/instance/drivers/driver_lxc.go
index 1b8208f7d8..0fb66b1785 100644
--- a/lxd/instance/drivers/driver_lxc.go
+++ b/lxd/instance/drivers/driver_lxc.go
@@ -1844,14 +1844,15 @@ func (c *lxc) DeviceEventHandler(runConf *deviceConfig.RunConfig) error {
 		for _, eventParts := range runConf.Uevents {
 			ueventArray := make([]string, 4)
 			ueventArray[0] = "forkuevent"
-			ueventArray[1] = "inject"
-			ueventArray[2] = fmt.Sprintf("%d", c.InitPID())
-			ueventArray[3] = fmt.Sprintf("%d", pidFdNr)
+			ueventArray[1] = "--"
+			ueventArray[2] = "inject"
+			ueventArray[3] = fmt.Sprintf("%d", c.InitPID())
+			ueventArray[4] = fmt.Sprintf("%d", pidFdNr)
 			length := 0
 			for _, part := range eventParts {
 				length = length + len(part) + 1
 			}
-			ueventArray[4] = fmt.Sprintf("%d", length)
+			ueventArray[5] = fmt.Sprintf("%d", length)
 			ueventArray = append(ueventArray, eventParts...)
 			_, _, err := shared.RunCommandSplit(nil, []*os.File{pidFd}, c.state.OS.ExecPath, ueventArray...)
 			if err != nil {
diff --git a/lxd/main_forknet.go b/lxd/main_forknet.go
index f69e70c0a9..5b8eac5a29 100644
--- a/lxd/main_forknet.go
+++ b/lxd/main_forknet.go
@@ -57,6 +57,9 @@ void forknet(void)
 		return;
 	}
 
+	// skip "--"
+	advance_arg(true);
+
 	// Get the pid
 	cur = advance_arg(false);
 	if (cur == NULL || (strcmp(cur, "--help") == 0 || strcmp(cur, "--version") == 0 || strcmp(cur, "-h") == 0)) {
@@ -140,9 +143,9 @@ func (c *cmdForknet) RunInfo(cmd *cobra.Command, args []string) error {
 }
 
 func (c *cmdForknet) RunDetach(cmd *cobra.Command, args []string) error {
-	lxdPID := args[1]
-	ifName := args[2]
-	hostName := args[3]
+	lxdPID := args[2]
+	ifName := args[3]
+	hostName := args[4]
 
 	if lxdPID == "" {
 		return fmt.Errorf("LXD PID argument is required")


More information about the lxc-devel mailing list