From cdc2c87112246e530b1f9b346e4e6cecfdea3a96 Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Tue, 23 Feb 2021 19:10:38 +0100 Subject: [PATCH] commands: handle older clients gracefully Signed-off-by: Christian Brauner --- src/lxc/commands.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/lxc/commands.c b/src/lxc/commands.c index 4ddd06973..514a431c0 100644 --- a/src/lxc/commands.c +++ b/src/lxc/commands.c @@ -502,11 +502,16 @@ static int lxc_cmd_get_init_pid_callback(int fd, struct lxc_cmd_req *req, int lxc_cmd_get_init_pidfd(const char *name, const char *lxcpath) { + int pidfd; int ret, stopped; struct lxc_cmd_rr cmd = { .req = { .cmd = LXC_CMD_GET_INIT_PIDFD, }, + .rsp = { + .data = INT_TO_PTR(-EBADF), + .ret = ENOSYS, + }, }; ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL); @@ -514,9 +519,13 @@ int lxc_cmd_get_init_pidfd(const char *name, const char *lxcpath) return log_debug_errno(-1, errno, "Failed to process init pidfd command"); if (cmd.rsp.ret < 0) - return log_debug_errno(-EBADF, errno, "Failed to receive init pidfd"); + return syserrno_set(cmd.rsp.ret, "Failed to receive init pidfd"); - return PTR_TO_INT(cmd.rsp.data); + pidfd = PTR_TO_INT(cmd.rsp.data); + if (pidfd < 0) + return syserrno_set(pidfd, "Failed to receive init pidfd"); + + return pidfd; } static int lxc_cmd_get_init_pidfd_callback(int fd, struct lxc_cmd_req *req, -- 2.47.3