aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-07-28 17:04:25 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-07-28 17:09:56 +0200
commitda131220aac727865b9e33e8d34743939e8acbf0 (patch)
tree2ea9362119ff8bec0f832916c2f589b66c653cfd /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java
parentcce243299a400e9d68b9bd350fd75870f51b732f (diff)
downloadopen-keychain-da131220aac727865b9e33e8d34743939e8acbf0.tar.gz
open-keychain-da131220aac727865b9e33e8d34743939e8acbf0.tar.bz2
open-keychain-da131220aac727865b9e33e8d34743939e8acbf0.zip
watch out for nullpointers from get(Un|)HashedSubpackets
fixes #721
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java21
1 files changed, 14 insertions, 7 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java
index df19930c4..28e4c51d6 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/WrappedSignature.java
@@ -63,13 +63,17 @@ public class WrappedSignature {
}
try {
PGPSignatureList list;
- list = mSig.getHashedSubPackets().getEmbeddedSignatures();
- for(int i = 0; i < list.size(); i++) {
- sigs.add(new WrappedSignature(list.get(i)));
+ if (mSig.getHashedSubPackets() != null) {
+ list = mSig.getHashedSubPackets().getEmbeddedSignatures();
+ for (int i = 0; i < list.size(); i++) {
+ sigs.add(new WrappedSignature(list.get(i)));
+ }
}
- list = mSig.getUnhashedSubPackets().getEmbeddedSignatures();
- for(int i = 0; i < list.size(); i++) {
- sigs.add(new WrappedSignature(list.get(i)));
+ if (mSig.getUnhashedSubPackets() != null) {
+ list = mSig.getUnhashedSubPackets().getEmbeddedSignatures();
+ for (int i = 0; i < list.size(); i++) {
+ sigs.add(new WrappedSignature(list.get(i)));
+ }
}
} catch (PGPException e) {
// no matter
@@ -97,6 +101,9 @@ public class WrappedSignature {
if(!isRevocation()) {
throw new PgpGeneralException("Not a revocation signature.");
}
+ if (mSig.getHashedSubPackets() == null) {
+ return null;
+ }
SignatureSubpacket p = mSig.getHashedSubPackets().getSubpacket(
SignatureSubpacketTags.REVOCATION_REASON);
// For some reason, this is missing in SignatureSubpacketInputStream:146
@@ -205,7 +212,7 @@ public class WrappedSignature {
}
public boolean isLocal() {
- if (!mSig.hasSubpackets()
+ if (mSig.getHashedSubPackets() == null
|| !mSig.getHashedSubPackets().hasSubpacket(SignatureSubpacketTags.EXPORTABLE)) {
return false;
}