From: Christian Brauner Date: Tue, 23 Feb 2021 18:10:38 +0000 (+0100) Subject: commands: handle older clients gracefully X-Git-Tag: lxc-5.0.0~273^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8a95cd827108678493d14b7f85c2ffb8861cbd2d;p=thirdparty%2Flxc.git commands: handle older clients gracefully Signed-off-by: Christian Brauner --- diff --git a/src/lxc/commands.c b/src/lxc/commands.c index bb81aa112..c5d4dd151 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,