Handle odd sized buffers on backup import decrypt

Fixes #7701
This commit is contained in:
Moxie Marlinspike 2018-04-18 21:20:06 -07:00
parent 8b74e9a075
commit 2ac0179d65

View File

@ -204,11 +204,20 @@ public class FullBackupImporter extends FullBackupBase {
mac.update(buffer, 0, read);
byte[] plaintext = cipher.update(buffer, 0, read);
out.write(plaintext, 0, plaintext.length);
if (plaintext != null) {
out.write(plaintext, 0, plaintext.length);
}
length -= read;
}
byte[] plaintext = cipher.doFinal();
if (plaintext != null) {
out.write(plaintext, 0, plaintext.length);
}
out.close();
byte[] ourMac = mac.doFinal();
@ -225,7 +234,7 @@ public class FullBackupImporter extends FullBackupBase {
//destination.delete();
throw new IOException("Bad MAC");
}
} catch (InvalidKeyException | InvalidAlgorithmParameterException e) {
} catch (InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException e) {
throw new AssertionError(e);
}
}