Browse Source

fix: disable authentication for blank admin password

pull/2995/head
Alexander Hoffer 1 week ago
parent
commit
6981b880ec
  1. 6
      examples/simple_room_server/RoomAuth.h
  2. 4
      test/test_room_auth/test_room_auth.cpp

6
examples/simple_room_server/RoomAuth.h

@ -14,11 +14,11 @@ enum class LoginPermission : uint8_t {
inline LoginPermission resolveLoginPermission(const char *supplied_password, const char *admin_password,
const char *guest_password, bool allow_read_only) {
if (strcmp(supplied_password, admin_password) == 0) {
// Empty configured passwords disable their corresponding authenticated role.
if (admin_password[0] != 0 && strcmp(supplied_password, admin_password) == 0) {
return LoginPermission::Admin;
}
// An empty guest password disables authenticated read/write access. Without
// this guard, a blank login is promoted before open read-only access applies.
// Without this guard, a blank login is promoted before open read-only access applies.
if (guest_password[0] != 0 && strcmp(supplied_password, guest_password) == 0) {
return LoginPermission::ReadWrite;
}

4
test/test_room_auth/test_room_auth.cpp

@ -13,6 +13,10 @@ TEST(RoomAuth, AdminPasswordTakesPriorityWhenPasswordsMatch) {
EXPECT_EQ(LoginPermission::Admin, resolveLoginPermission("shared", "shared", "shared", true));
}
TEST(RoomAuth, BlankAdminPasswordDoesNotGrantAdmin) {
EXPECT_EQ(LoginPermission::Guest, resolveLoginPermission("", "", "guest", true));
}
TEST(RoomAuth, MatchingNonEmptyGuestPasswordTakesPriorityOverOpenReadOnly) {
EXPECT_EQ(LoginPermission::ReadWrite, resolveLoginPermission("guest", "admin", "guest", true));
}

Loading…
Cancel
Save