From 212cdc71ed80bd6828a228a27f64eab3707be8fb Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Thu, 12 Jul 2012 18:12:32 +0900 Subject: [PATCH] Prevent groups from being renamed to empty string When renaming a group, raise an exception if the new name is empty. Bug: Issue 1457 Change-Id: I198e1affa0c04cfcf7433eb44360c145be2d4972 --- .../com/google/gerrit/httpd/rpc/account/RenameGroup.java | 3 ++- .../google/gerrit/server/account/PerformRenameGroup.java | 8 ++++++-- .../google/gerrit/sshd/commands/RenameGroupCommand.java | 3 +++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/RenameGroup.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/RenameGroup.java index 09dc582bf2..24faf9e888 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/RenameGroup.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/RenameGroup.java @@ -15,6 +15,7 @@ package com.google.gerrit.httpd.rpc.account; import com.google.gerrit.common.data.GroupDetail; +import com.google.gerrit.common.errors.InvalidNameException; import com.google.gerrit.common.errors.NameAlreadyUsedException; import com.google.gerrit.common.errors.NoSuchGroupException; import com.google.gerrit.httpd.rpc.Handler; @@ -44,7 +45,7 @@ class RenameGroup extends Handler { @Override public GroupDetail call() throws OrmException, NameAlreadyUsedException, - NoSuchGroupException { + NoSuchGroupException, InvalidNameException { return performRenameGroupFactory.create().renameGroup(groupId, newName); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/PerformRenameGroup.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/PerformRenameGroup.java index 6db232a7a2..4c72d49ca0 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/PerformRenameGroup.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/PerformRenameGroup.java @@ -15,6 +15,7 @@ package com.google.gerrit.server.account; import com.google.gerrit.common.data.GroupDetail; +import com.google.gerrit.common.errors.InvalidNameException; import com.google.gerrit.common.errors.NameAlreadyUsedException; import com.google.gerrit.common.errors.NoSuchGroupException; import com.google.gerrit.reviewdb.client.AccountGroup; @@ -60,7 +61,7 @@ public class PerformRenameGroup { public GroupDetail renameGroup(final String groupName, final String newGroupName) throws OrmException, NameAlreadyUsedException, - NoSuchGroupException { + NoSuchGroupException, InvalidNameException { final AccountGroup.NameKey groupNameKey = new AccountGroup.NameKey(groupName); final AccountGroup group = groupCache.get(groupNameKey); @@ -72,12 +73,15 @@ public class PerformRenameGroup { public GroupDetail renameGroup(final AccountGroup.Id groupId, final String newName) throws OrmException, NameAlreadyUsedException, - NoSuchGroupException { + NoSuchGroupException, InvalidNameException { final GroupControl ctl = groupControlFactory.validateFor(groupId); final AccountGroup group = db.accountGroups().get(groupId); if (group == null || !ctl.isOwner()) { throw new NoSuchGroupException(groupId); } + if (newName.trim().isEmpty()) { + throw new InvalidNameException(); + } final AccountGroup.NameKey old = group.getNameKey(); final AccountGroup.NameKey key = new AccountGroup.NameKey(newName); diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/RenameGroupCommand.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/RenameGroupCommand.java index ad9733d6fa..b9abc9237a 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/RenameGroupCommand.java +++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/RenameGroupCommand.java @@ -14,6 +14,7 @@ package com.google.gerrit.sshd.commands; +import com.google.gerrit.common.errors.InvalidNameException; import com.google.gerrit.common.errors.NameAlreadyUsedException; import com.google.gerrit.common.errors.NoSuchGroupException; import com.google.gerrit.server.account.PerformRenameGroup; @@ -39,6 +40,8 @@ public class RenameGroupCommand extends SshCommand { performRenameGroupFactory.create().renameGroup(groupName, newGroupName); } catch (OrmException e) { throw die(e); + } catch (InvalidNameException e) { + throw die(e); } catch (NameAlreadyUsedException e) { throw die(e); } catch (NoSuchGroupException e) {