From: Mike Yuan Date: Tue, 11 Nov 2025 18:41:11 +0000 (+0100) Subject: logind-session-dbus: use fd_vet_accmode() where appropriate X-Git-Tag: v259-rc1~83^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=51bb3a09320d79e3f0069dbf6aa435d41b875b5a;p=thirdparty%2Fsystemd.git logind-session-dbus: use fd_vet_accmode() where appropriate --- diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c index d7212ddecde..1614fb47193 100644 --- a/src/login/logind-session-dbus.c +++ b/src/login/logind-session-dbus.c @@ -531,8 +531,8 @@ static int method_set_display(sd_bus_message *message, void *userdata, sd_bus_er static int method_set_tty(sd_bus_message *message, void *userdata, sd_bus_error *error) { Session *s = ASSERT_PTR(userdata); - int fd, r, flags; _cleanup_free_ char *q = NULL; + int fd, r; assert(message); @@ -543,15 +543,11 @@ static int method_set_tty(sd_bus_message *message, void *userdata, sd_bus_error if (!session_is_controller(s, sd_bus_message_get_sender(message))) return sd_bus_error_set(error, BUS_ERROR_NOT_IN_CONTROL, "You must be in control of this session to set tty"); - assert(fd >= 0); - - flags = fcntl(fd, F_GETFL, 0); - if (flags < 0) - return -errno; - if ((flags & O_ACCMODE_STRICT) != O_RDWR) + r = fd_vet_accmode(fd, O_RDWR); + if (r == -EPROTOTYPE) return -EACCES; - if (FLAGS_SET(flags, O_PATH)) - return -ENOTTY; + if (r < 0) + return r; r = getttyname_malloc(fd, &q); if (r < 0)