From ab07d0d86d8b64b4f7c88b45bc81f1eec22105db Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 10 Apr 2014 19:00:05 -0400
Subject: [PATCH] Preserve key index when re-adding an existing key
---
src/main/java/com/gitblit/transport/ssh/FileKeyManager.java | 16 +++++++++++-----
1 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/gitblit/transport/ssh/FileKeyManager.java b/src/main/java/com/gitblit/transport/ssh/FileKeyManager.java
index 8a3d2ff..77f818c 100644
--- a/src/main/java/com/gitblit/transport/ssh/FileKeyManager.java
+++ b/src/main/java/com/gitblit/transport/ssh/FileKeyManager.java
@@ -130,7 +130,7 @@
public boolean addKey(String username, SshKey key) {
try {
String newKey = stripCommentFromKey(key.getRawData());
-
+ boolean replaced = false;
List<String> lines = new ArrayList<String>();
File keystore = getKeystore(username);
if (keystore.exists()) {
@@ -147,16 +147,22 @@
continue;
}
- // only add keys that do not match the new key
String oldKey = stripCommentFromKey(line);
- if (!newKey.equals(oldKey)) {
+ if (newKey.equals(oldKey)) {
+ // replace key
+ lines.add(key.getRawData());
+ replaced = true;
+ } else {
+ // retain key
lines.add(entry);
}
}
}
- // add new key
- lines.add(key.getRawData());
+ if (!replaced) {
+ // new key, append
+ lines.add(key.getRawData());
+ }
// write keystore
String content = Joiner.on("\n").join(lines).trim().concat("\n");
--
Gitblit v1.9.1