diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2022-04-06 16:47:59 +0100 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2022-04-06 16:47:59 +0100 |
commit | 8bcd392ee79996f828fd40c52198071ec0f273dd (patch) | |
tree | 5bef646118a218f281e7ff9764c301f117da6f50 | |
parent | 3a6d82b7c8d4254fa87959d8cf19b313f5e05480 (diff) | |
download | rtmux-8bcd392ee79996f828fd40c52198071ec0f273dd.tar.gz rtmux-8bcd392ee79996f828fd40c52198071ec0f273dd.tar.bz2 rtmux-8bcd392ee79996f828fd40c52198071ec0f273dd.zip |
On platforms with no way to get peer UID, use getuid(), also fix some failure
checks.
-rw-r--r-- | cmd-queue.c | 2 | ||||
-rw-r--r-- | compat/getpeereid.c | 3 | ||||
-rw-r--r-- | server-acl.c | 8 |
3 files changed, 8 insertions, 5 deletions
diff --git a/cmd-queue.c b/cmd-queue.c index 633af06b..6c7c3675 100644 --- a/cmd-queue.c +++ b/cmd-queue.c @@ -569,7 +569,7 @@ cmdq_add_message(struct cmdq_item *item) tmp = cmd_print(item->cmd); if (c != NULL) { uid = proc_get_peer_uid(c->peer); - if (uid != getuid()) { + if (uid != (uid_t)-1 && uid != getuid()) { if ((pw = getpwuid(uid)) != NULL) xasprintf(&user, "[%s]", pw->pw_name); else diff --git a/compat/getpeereid.c b/compat/getpeereid.c index 5a593c07..c4988438 100644 --- a/compat/getpeereid.c +++ b/compat/getpeereid.c @@ -53,7 +53,6 @@ getpeereid(int s, uid_t *uid, gid_t *gid) return (0); } #else - errno = EOPNOTSUPP; - return (-1); + return (getuid()); #endif } diff --git a/server-acl.c b/server-acl.c index 344f795c..26f2490d 100644 --- a/server-acl.c +++ b/server-acl.c @@ -151,7 +151,7 @@ server_acl_user_deny_write(uid_t uid) TAILQ_FOREACH(c, &clients, entry) { uid = proc_get_peer_uid(c->peer); - if (uid == user->uid && uid == user->uid) + if (uid != (uid_t)-1 && uid == user->uid) c->flags |= CLIENT_READONLY; } } @@ -164,7 +164,11 @@ int server_acl_join(struct client *c) { struct server_acl_user *user; - uid_t uid = proc_get_peer_uid(c->peer); + uid_t uid; + + uid = proc_get_peer_uid(c->peer); + if (uid == (uid_t)-1) + return (0); user = server_acl_user_find(uid); if (user == NULL) |