Merge branch 'stable-2.14' into stable-2.15
* stable-2.14:
PostGpgKeys: Gracefully handle malformed GPG keys input
Change-Id: I72f639ada2db19dd7c33f98954088d4c0836c36c
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java
index 22d27ac..d0f08dd 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/AccountIT.java
@@ -1597,6 +1597,14 @@
}
@Test
+ public void addMalformedGpgKey() throws Exception {
+ String key = "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\ntest\n-----END PGP PUBLIC KEY BLOCK-----";
+ exception.expect(BadRequestException.class);
+ exception.expectMessage("Failed to parse GPG keys");
+ addGpgKey(key);
+ }
+
+ @Test
@UseSsh
public void sshKeys() throws Exception {
//
diff --git a/gerrit-gpg/src/main/java/com/google/gerrit/gpg/server/PostGpgKeys.java b/gerrit-gpg/src/main/java/com/google/gerrit/gpg/server/PostGpgKeys.java
index 7d1aceed..d725e72 100644
--- a/gerrit-gpg/src/main/java/com/google/gerrit/gpg/server/PostGpgKeys.java
+++ b/gerrit-gpg/src/main/java/com/google/gerrit/gpg/server/PostGpgKeys.java
@@ -66,6 +66,7 @@
import org.bouncycastle.openpgp.PGPException;
import org.bouncycastle.openpgp.PGPPublicKey;
import org.bouncycastle.openpgp.PGPPublicKeyRing;
+import org.bouncycastle.openpgp.PGPRuntimeOperationException;
import org.bouncycastle.openpgp.bc.BcPGPObjectFactory;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.CommitBuilder;
@@ -183,6 +184,8 @@
"Cannot both add and delete key: " + keyToString(keyRing.getPublicKey()));
}
keyRings.add(keyRing);
+ } catch (PGPRuntimeOperationException e) {
+ throw new BadRequestException("Failed to parse GPG keys", e);
}
}
return keyRings;