diff options
author | Daniel Golle <daniel@makrotopia.org> | 2023-01-13 18:53:07 +0000 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2023-01-16 21:07:48 +0000 |
commit | 6b9629b7448cd11fc204c63608910700a4b47040 (patch) | |
tree | e8ba17b6c8790042a4d9fbdf7e99e31c5e24ef4d | |
parent | 04d7570f473ca2a657a89f74ac4027f6c94f4305 (diff) | |
download | procd-6b9629b7448cd11fc204c63608910700a4b47040.tar.gz |
jail: don't assume positive return value of creat
Handle a (theoretical) error case when calling creat in
create_dev_console function.
Coverity CID: 1490100 (Argument cannot be negative)
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-rw-r--r-- | jail/jail.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/jail/jail.c b/jail/jail.c index 31b64e5..09780ac 100644 --- a/jail/jail.c +++ b/jail/jail.c @@ -374,7 +374,7 @@ static int create_dev_console(const char *jail_root) { char *console_fname; char dev_console_path[PATH_MAX]; - int slave_console_fd; + int slave_console_fd, dev_console_dummy; /* Open UNIX/98 virtual console */ console_fd = posix_openpt(O_RDWR | O_NOCTTY); @@ -394,7 +394,11 @@ static int create_dev_console(const char *jail_root) /* mount-bind PTY slave to /dev/console in jail */ snprintf(dev_console_path, sizeof(dev_console_path), "%s/dev/console", jail_root); - close(creat(dev_console_path, 0620)); + dev_console_dummy = creat(dev_console_path, 0620); + if (dev_console_dummy < 0) + goto no_console; + + close(dev_console_dummy); if (mount(console_fname, dev_console_path, "bind", MS_BIND, NULL)) goto no_console; |