Don't allow commits to replace in wrong project
If the change is slated to a different project than the one the
commit was uploaded to, don't permit the replacement to take place.
This could be caused by a simple typo by the user, and we shouldn't
create a corrupt server side state because of it.
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/src/main/java/com/google/gerrit/server/ssh/Receive.java b/src/main/java/com/google/gerrit/server/ssh/Receive.java
index 817d220..7f70577 100644
--- a/src/main/java/com/google/gerrit/server/ssh/Receive.java
+++ b/src/main/java/com/google/gerrit/server/ssh/Receive.java
@@ -769,6 +769,12 @@
reject(cmd, "change " + changeId.get() + " closed");
return null;
}
+ if (change.getDest() == null
+ || !proj.getNameKey().equals(change.getDest().getParentKey())) {
+ reject(cmd, "change " + changeId.get() + " not in "
+ + proj.getName());
+ return null;
+ }
} else {
change = changeCache.get(changeId);
}