If the RemoteRefUpdate requests us to create a remote name of just "master" (say due to a bug in the push command line tool) we would do just that, creating "$project.git/master" on the remote side. This is not a valid ref for Git and confusion ensues when C Git tries to operate on the same repository. Normally these sorts of bad refs are blocked by git-receive-pack on the remote side, but here we don't have that so we must do the blocking as part of the push connection. Signed-off-by: Shawn O. Pearce <spearce@xxxxxxxxxxx> --- .../spearce/jgit/transport/WalkPushConnection.java | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/WalkPushConnection.java b/org.spearce.jgit/src/org/spearce/jgit/transport/WalkPushConnection.java index 5450b84..e11b85a 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/transport/WalkPushConnection.java +++ b/org.spearce.jgit/src/org/spearce/jgit/transport/WalkPushConnection.java @@ -129,6 +129,13 @@ class WalkPushConnection extends BaseConnection implements PushConnection { // final List<RemoteRefUpdate> updates = new ArrayList<RemoteRefUpdate>(); for (final RemoteRefUpdate u : refUpdates.values()) { + final String n = u.getRemoteName(); + if (!n.startsWith("refs/") || !Repository.isValidRefName(n)) { + u.setStatus(Status.REJECTED_OTHER_REASON); + u.setMessage("funny refname"); + continue; + } + if (AnyObjectId.equals(ObjectId.zeroId(), u.getNewObjectId())) deleteCommand(u); else -- 1.5.6.74.g8a5e -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html