The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxc/pull/3568

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===
Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com>
From ec0befee9475aa7d6913ee0da24761d66b111797 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brau...@ubuntu.com>
Date: Wed, 28 Oct 2020 03:58:54 +0100
Subject: [PATCH 1/4] commands: don't deref after NULL check

Fixes: Coverity 1465657
Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com>
---
 src/lxc/commands.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/lxc/commands.c b/src/lxc/commands.c
index de09c3aff0..cca09a1261 100644
--- a/src/lxc/commands.c
+++ b/src/lxc/commands.c
@@ -487,9 +487,12 @@ static int lxc_cmd_get_devpts_fd_callback(int fd, struct 
lxc_cmd_req *req,
        };
        int ret;
 
-       if (!handler->conf || handler->conf->devpts_fd < 0)
+       if (!handler->conf || handler->conf->devpts_fd < 0) {
                rsp.ret = -EBADF;
-       ret = lxc_abstract_unix_send_fds(fd, &handler->conf->devpts_fd, 1, 
&rsp, sizeof(rsp));
+               ret = lxc_abstract_unix_send_fds(fd, NULL, 0, &rsp, 
sizeof(rsp));
+       } else {
+               ret = lxc_abstract_unix_send_fds(fd, &handler->conf->devpts_fd, 
1, &rsp, sizeof(rsp));
+       }
        if (ret < 0)
                return log_error(LXC_CMD_REAP_CLIENT_FD, "Failed to send devpts 
fd");
 

From 3715d0c03fae815963cbcef66524a2deffda39e0 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brau...@ubuntu.com>
Date: Wed, 28 Oct 2020 04:01:19 +0100
Subject: [PATCH 2/4] utils: don't deref after NULL check

Fixes: Coverity 1465855
Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com>
---
 src/lxc/utils.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lxc/utils.c b/src/lxc/utils.c
index c02eef1526..561f7685cc 100644
--- a/src/lxc/utils.c
+++ b/src/lxc/utils.c
@@ -1113,7 +1113,7 @@ int safe_mount_beneath(const char *beneath, const char 
*src, const char *dst, co
        __do_close int beneath_fd = -EBADF;
        const char *path = beneath ? beneath : "/";
 
-       beneath_fd = openat(-1, beneath, O_RDONLY | O_CLOEXEC | O_DIRECTORY | 
O_PATH);
+       beneath_fd = openat(-1, path, O_RDONLY | O_CLOEXEC | O_DIRECTORY | 
O_PATH);
        if (beneath_fd < 0)
                return log_error_errno(-errno, errno, "Failed to open %s", 
path);
 

From 8ddf34f7a037325565b8cf8ff995cbf573f9932e Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brau...@ubuntu.com>
Date: Wed, 28 Oct 2020 04:03:31 +0100
Subject: [PATCH 3/4] conf: check snprint return value

Fixes: Coverity 1465854
Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com>
---
 src/lxc/conf.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 259d3766ab..c258d0b4c5 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -1207,7 +1207,9 @@ static int lxc_fill_autodev(const struct lxc_rootfs 
*rootfs)
                if (ret < 0) {
                        const char *mntpt = rootfs->path ? rootfs->mount : NULL;
                        if (errno == ENOSYS) {
-                               snprintf(path, sizeof(path), "%s/dev/%s", 
mntpt, device->name);
+                               ret = snprintf(path, sizeof(path), "%s/dev/%s", 
mntpt, device->name);
+                               if (ret < 0 || ret >= sizeof(path))
+                                       return log_error(-1, "Failed to create 
device path for %s", device->name);
                                ret = safe_mount(hostpath, path, 0, MS_BIND, 
NULL, rootfs->path ? rootfs->mount : NULL);
                        }
                }

From 0dde733e5a049e695885d733eb98795b0eddbd74 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brau...@ubuntu.com>
Date: Wed, 28 Oct 2020 04:04:42 +0100
Subject: [PATCH 4/4] utils: check snprintf return value

Fixes: Coverity 1465853
Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com>
---
 src/lxc/utils.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/lxc/utils.c b/src/lxc/utils.c
index 561f7685cc..baf80b7f5c 100644
--- a/src/lxc/utils.c
+++ b/src/lxc/utils.c
@@ -1097,7 +1097,9 @@ int __safe_mount_beneath_at(int beneath_fd, const char 
*src, const char *dst, co
        target_fd = openat2(beneath_fd, dst, &how, sizeof(how));
        if (target_fd < 0)
                return -errno;
-       snprintf(tgt_buf, sizeof(tgt_buf), "/proc/self/fd/%d", target_fd);
+       ret = snprintf(tgt_buf, sizeof(tgt_buf), "/proc/self/fd/%d", target_fd);
+       if (ret < 0 || ret >= sizeof(tgt_buf))
+               return -EIO;
 
        if (!is_empty_string(src_buf))
                ret = mount(src_buf, tgt_buf, fstype, flags, data);
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to