diff options
author | Thialfihar <thialfihar@gmail.com> | 2010-05-04 13:11:56 +0000 |
---|---|---|
committer | Thialfihar <thialfihar@gmail.com> | 2010-05-04 13:11:56 +0000 |
commit | 778f51dbaa1052ec24ec2addd7a990551c7ce406 (patch) | |
tree | 63ad552745bb25603aabdc967bea88eac9f1f173 /src | |
parent | 95e02158d866c67b281f12d66fc5b147eb1eb137 (diff) | |
download | open-keychain-778f51dbaa1052ec24ec2addd7a990551c7ce406.tar.gz open-keychain-778f51dbaa1052ec24ec2addd7a990551c7ce406.tar.bz2 open-keychain-778f51dbaa1052ec24ec2addd7a990551c7ce406.zip |
check whether the hashed packet is non-null before using it, also checking the unhashed ones in the same manner... not sure whether that's needed, but can't hurt? Fixes issue 17.
Diffstat (limited to 'src')
-rw-r--r-- | src/org/thialfihar/android/apg/Apg.java | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/src/org/thialfihar/android/apg/Apg.java b/src/org/thialfihar/android/apg/Apg.java index 6119041ec..612f663ce 100644 --- a/src/org/thialfihar/android/apg/Apg.java +++ b/src/org/thialfihar/android/apg/Apg.java @@ -1019,13 +1019,21 @@ public class Apg { }
for (PGPSignature sig : new IterableIterator<PGPSignature>(key.getSignatures())) {
- if (!key.isMasterKey() || sig.getKeyID() == key.getKeyID()) {
- PGPSignatureSubpacketVector hashed = sig.getHashedSubPackets();
+ if (key.isMasterKey() && sig.getKeyID() != key.getKeyID()) {
+ continue;
+ }
+ PGPSignatureSubpacketVector hashed = sig.getHashedSubPackets();
- if ((hashed.getKeyFlags() &
- (KeyFlags.ENCRYPT_COMMS | KeyFlags.ENCRYPT_STORAGE)) != 0) {
- return true;
- }
+ if (hashed != null &&(hashed.getKeyFlags() &
+ (KeyFlags.ENCRYPT_COMMS | KeyFlags.ENCRYPT_STORAGE)) != 0) {
+ return true;
+ }
+
+ PGPSignatureSubpacketVector unhashed = sig.getUnhashedSubPackets();
+
+ if (unhashed != null &&(unhashed.getKeyFlags() &
+ (KeyFlags.ENCRYPT_COMMS | KeyFlags.ENCRYPT_STORAGE)) != 0) {
+ return true;
}
}
return false;
@@ -1046,12 +1054,19 @@ public class Apg { }
for (PGPSignature sig : new IterableIterator<PGPSignature>(key.getSignatures())) {
- if (!key.isMasterKey() || sig.getKeyID() == key.getKeyID()) {
- PGPSignatureSubpacketVector hashed = sig.getHashedSubPackets();
+ if (key.isMasterKey() && sig.getKeyID() != key.getKeyID()) {
+ continue;
+ }
+ PGPSignatureSubpacketVector hashed = sig.getHashedSubPackets();
- if ((hashed.getKeyFlags() & KeyFlags.SIGN_DATA) != 0) {
- return true;
- }
+ if (hashed != null && (hashed.getKeyFlags() & KeyFlags.SIGN_DATA) != 0) {
+ return true;
+ }
+
+ PGPSignatureSubpacketVector unhashed = sig.getUnhashedSubPackets();
+
+ if (unhashed != null && (unhashed.getKeyFlags() & KeyFlags.SIGN_DATA) != 0) {
+ return true;
}
}
|