summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2018-07-12 17:56:32 +0200
committerJustus Winter <justus@sequoia-pgp.org>2018-07-12 18:03:01 +0200
commit23d570338e252c715c5a24a1a81fbaf5c8eddcf7 (patch)
treea4f69f505400a1d203502591bc007b8b98f0a1e7
parent5475981bc46d110b91ae695eaf9dc5bcfb8872cb (diff)
openpgp: Fix reading large chunks of armored data.
- When requesting more data, we need to add what we want to what we got, not what we previously requested. Note that `BufferedReader::data(n)` may return more than n bytes, so requesting n+2 bytes may not return more than when requesting n bytes.
-rw-r--r--openpgp/src/armor.rs38
-rw-r--r--openpgp/tests/data/keys/yuge-key-so-yuge-the-yugest.asc1377
2 files changed, 1405 insertions, 10 deletions
diff --git a/openpgp/src/armor.rs b/openpgp/src/armor.rs
index 931ad44e..2d8932a4 100644
--- a/openpgp/src/armor.rs
+++ b/openpgp/src/armor.rs
@@ -618,22 +618,21 @@ impl<'a> Read for Reader<'a> {
}
let (consumed, decoded) = {
- // We may have to get some more until we have a
+ // Try to get enough bytes to fill buf, account for bytes
+ // filled using our buffer, round up, and add enough for
+ // the footer.
+ //
+ // Later, we may have to get some more until we have a
// multiple of four non-whitespace ASCII characters.
- let mut get_more = 0;
+ let mut want = (buf.len() - read + 2) / 3 * 4
+ + self.kind.footer_max_len();
// Keep track of how much we got last time to detect
// hitting EOF.
let mut got = 0;
loop {
- // Try to get enough bytes to fill buf, account for
- // bytes filled using our buffer, round up, and add
- // enough for the footer.
- let raw = self.source.data((buf.len() - read + 2) / 3 * 4
- + self.kind.footer_max_len()
- + get_more)?;
-
+ let raw = self.source.data(want)?;
if raw.len() == got {
return Err(Error::new(ErrorKind::UnexpectedEof,
"Armor footer is missing"));
@@ -662,7 +661,7 @@ impl<'a> Read for Reader<'a> {
}
// Get some more bytes.
- get_more += 4 - n % 4;
+ want = got + 4 - n % 4;
}
}
};
@@ -977,6 +976,25 @@ mod test {
}
}
+ #[test]
+ fn dearmor_yuge() {
+ let mut file =
+ File::open("tests/data/keys/yuge-key-so-yuge-the-yugest.asc")
+ .unwrap();
+ let mut r = Reader::new(&mut file, Kind::Any);
+ let mut dearmored = Vec::<u8>::new();
+ r.read_to_end(&mut dearmored).unwrap();
+
+ let mut file =
+ File::open("tests/data/keys/yuge-key-so-yuge-the-yugest.asc")
+ .unwrap();
+ let r = Reader::new(&mut file, Kind::Any);
+ let mut dearmored = Vec::<u8>::new();
+ for c in r.bytes() {
+ dearmored.push(c.unwrap());
+ }
+ }
+
quickcheck! {
fn roundtrip(kind: Kind, payload: Vec<u8>) -> bool {
use std::io::Cursor;
diff --git a/openpgp/tests/data/keys/yuge-key-so-yuge-the-yugest.asc b/openpgp/tests/data/keys/yuge-key-so-yuge-the-yugest.asc
new file mode 100644
index 00000000..efdc9bc9
--- /dev/null
+++ b/openpgp/tests/data/keys/yuge-key-so-yuge-the-yugest.asc
@@ -0,0 +1,1377 @@
+-----BEGIN PGP PRIVATE KEY BLOCK-----
+
+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