diff options
author | Alexander Kjäll <alexander.kjall@gmail.com> | 2023-12-24 21:02:41 +0100 |
---|---|---|
committer | Alexander Kjäll <alexander.kjall@gmail.com> | 2023-12-24 21:03:12 +0100 |
commit | f260fbec82dd38525cdffccd1b197ee7b157e03e (patch) | |
tree | 07384eb8f23a8594805f77f4e3a4c22906f228c8 | |
parent | 37c53c8a5a37ae912437ab0f2beae938b5b9e48a (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.rs | 36 |
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----- |