Skip to content

Commit

Permalink
Check permissions when performing tab completion
Browse files Browse the repository at this point in the history
- Fixes advisory GHSA-cchm-2r9h-xvhv
  • Loading branch information
AuroraLS3 committed May 23, 2024
1 parent 365ea2d commit ad98e28
Showing 1 changed file with 18 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -140,13 +140,21 @@ public CommandWithSubcommands build() {
}

public List<String> serverNames(CMDSender sender, @Untrusted Arguments arguments) {
@Untrusted String asString = arguments.concatenate(" ");
return tabCompleteCache.getMatchingServerIdentifiers(asString);
if (sender.hasPermission(Permissions.SERVER)) {
@Untrusted String asString = arguments.concatenate(" ");
return tabCompleteCache.getMatchingServerIdentifiers(asString);
}
return List.of();
}

private List<String> playerNames(CMDSender sender, @Untrusted Arguments arguments) {
@Untrusted String asString = arguments.concatenate(" ");
return tabCompleteCache.getMatchingPlayerIdentifiers(asString);
if (sender.hasPermission(Permissions.PLAYER_OTHER)) {
@Untrusted String asString = arguments.concatenate(" ");
return tabCompleteCache.getMatchingPlayerIdentifiers(asString);
} else if (sender.hasPermission(Permissions.PLAYER_SELF)) {
return sender.getPlayerName().map(List::of).orElse(List.of());
}
return List.of();
}

private Subcommand serverCommand() {
Expand Down Expand Up @@ -403,6 +411,9 @@ private Subcommand restoreCommand() {
}

private List<String> getBackupFilenames(CMDSender sender, @Untrusted Arguments arguments) {
if (!sender.hasPermission(Permissions.DATA_RESTORE)) {
return List.of();
}
if (arguments.get(1).isPresent()) {
return DBType.names();
}
Expand Down Expand Up @@ -531,6 +542,9 @@ private Subcommand setGroup() {
}

private List<String> webGroupTabComplete(CMDSender sender, @Untrusted Arguments arguments) {
if (!sender.hasPermission(Permissions.SET_GROUP)) {
return List.of();
}
Optional<String> groupArgument = arguments.get(1);
if (groupArgument.isPresent()) {
return tabCompleteCache.getMatchingWebGroupNames(groupArgument.get());
Expand Down

0 comments on commit ad98e28

Please sign in to comment.