summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kjäll <alexander.kjall@gmail.com>2023-12-24 21:02:41 +0100
committerAlexander Kjäll <alexander.kjall@gmail.com>2023-12-24 21:03:12 +0100
commitf260fbec82dd38525cdffccd1b197ee7b157e03e (patch)
tree07384eb8f23a8594805f77f4e3a4c22906f228c8
parent37c53c8a5a37ae912437ab0f2beae938b5b9e48a (diff)
We had a testfailure in sequoia on s390x in Debian, and this reproduces the error.
Test output: 363s failures: 363s 363s ---- packet::test::mutate_eq_discriminates stdout ---- 363s thread 'packet::test::mutate_eq_discriminates' panicked at '[quickcheck] TEST FAILED. Arguments: (-----BEGIN PGP ARMORED FILE----- 363s 363s w8BRBU4CAuyZ1F8AIADMWALvqVxDf787kQH3ZhXdebbRpneHZjl7+KlY2wfTVEad 363s 7wAJB43JggBr6F9Yprbu48JX+xFAFkXbhh/AWD1W7qQXlKIz4HDd3BBE2QNfzKVN 363s GQtfXs4AdI53W1L/KibaFcT0cwD8ANn/wtxjP6FO+2eGvRoc6wG+ogDwa8FlrAFy 363s hoH9r0Bu3zoXex0jBmRtgN8HXj4A/05z76OfuCyZhgHC/9/8AU+6hyTUYOzyVPES 363s uYttawHWpFxW/i9zAUmk0P8ZyRE+/8CCGr8wyscORUuCVrCjjWzSlEpDnh1aNJIY 363s /99JYLLapQcL2G7BkCrSKQsB5NkJ+Nb/6JpiAAE+aVYARRal 363s =49fD 363s -----END PGP ARMORED FILE----- 363s , 1863593116114256088)', /usr/share/cargo/registry/quickcheck-1.0.3/src/tester.rs:165:28 363s stack backtrace: 363s 0: std::panicking::begin_panic 363s at /usr/src/rustc-1.70.0/library/std/src/panicking.rs:610:12 363s 1: quickcheck::tester::QuickCheck::quickcheck 363s at /usr/share/cargo/registry/quickcheck-1.0.3/src/tester.rs:165:28 363s 2: quickcheck::tester::quickcheck 363s at /usr/share/cargo/registry/quickcheck-1.0.3/src/tester.rs:183:5 363s 3: sequoia_openpgp::packet::test::mutate_eq_discriminates 363s at /usr/share/cargo/registry/quickcheck-1.0.3/src/lib.rs:62:21 363s 4: sequoia_openpgp::packet::test::mutate_eq_discriminates::{{closure}} 363s at /usr/share/cargo/registry/quickcheck-1.0.3/src/lib.rs:58:31 363s 5: core::ops::function::FnOnce::call_once 363s at /usr/src/rustc-1.70.0/library/core/src/ops/function.rs:250:5 363s 6: core::ops::function::FnOnce::call_once 363s at /usr/src/rustc-1.70.0/library/core/src/ops/function.rs:250:5 363s note: Some details are omitted, run with for a verbose backtrace. 363s 363s 363s failures: 363s packet::test::mutate_eq_discriminates 363s
-rw-r--r--openpgp/src/packet/mod.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/openpgp/src/packet/mod.rs b/openpgp/src/packet/mod.rs
index 3a773a3a..4837b26a 100644
--- a/openpgp/src/packet/mod.rs
+++ b/openpgp/src/packet/mod.rs
@@ -2068,6 +2068,42 @@ mod test {
}
/// Problem on systems with 32-bit time_t.
+ #[cfg(target_pointer_width = "64")]
+ #[test]
+ fn issue_XXX() {
+ let p = Packet::from_bytes(b"-----BEGIN PGP ARMORED FILE-----
+
+w8BRBU4CAuyZ1F8AIADMWALvqVxDf787kQH3ZhXdebbRpneHZjl7+KlY2wfTVEad
+7wAJB43JggBr6F9Yprbu48JX+xFAFkXbhh/AWD1W7qQXlKIz4HDd3BBE2QNfzKVN
+GQtfXs4AdI53W1L/KibaFcT0cwD8ANn/wtxjP6FO+2eGvRoc6wG+ogDwa8FlrAFy
+hoH9r0Bu3zoXex0jBmRtgN8HXj4A/05z76OfuCyZhgHC/9/8AU+6hyTUYOzyVPES
+uYttawHWpFxW/i9zAUmk0P8ZyRE+/8CCGr8wyscORUuCVrCjjWzSlEpDnh1aNJIY
+/99JYLLapQcL2G7BkCrSKQsB5NkJ+Nb/6JpiAAE+aVYARRal
+=49fD
+-----END PGP ARMORED FILE-----
+").unwrap();
+
+ if p.tag() == Tag::CompressedData {
+ // Mutating compressed data streams is not that
+ // trivial, because there are bits we can flip without
+ // changing the decompressed data.
+ return;
+ }
+
+ let mut buf = p.to_vec().unwrap();
+ eprintln!("bit = {}", bit);
+ buf[bit / 8] ^= 1 << (bit % 8);
+
+ assert_eq!(true,
+ match Packet::from_bytes(&buf) {
+ Ok(q) => p != q,
+ Err(_) => true, // Packet failed to parse.
+ }
+ );
+ }
+
+
+ /// Problem on systems with 32-bit time_t.
#[test]
fn issue_802() -> Result<()> {
let pp = crate::PacketPile::from_bytes(b"-----BEGIN PGP ARMORED FILE-----