aboutsummaryrefslogtreecommitdiff
path: root/test/real_mode
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2021-12-16 19:58:15 -0800
committeriximeow <me@iximeow.net>2021-12-16 20:01:26 -0800
commitf063f747c21548329170fd09fd09d391b2277aed (patch)
tree38159b9379c7f7c081554d431f78872b5a465e92 /test/real_mode
parentcd987288f0334b9888174f4ccc2d1f564388e994 (diff)
displacements are stored as unsigned, but are functionally signed ints
so multiplying to expand EVEX compressed offsets can overflow, and that needs to be okay.
Diffstat (limited to 'test/real_mode')
-rw-r--r--test/real_mode/mod.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/test/real_mode/mod.rs b/test/real_mode/mod.rs
index 6dcc3a2..b13358a 100644
--- a/test/real_mode/mod.rs
+++ b/test/real_mode/mod.rs
@@ -18362,3 +18362,9 @@ fn test_invalid_sequences() {
test_invalid(&[0xf3, 0xf2, 0x0f, 0xae, 0x8f, 0x54, 0x3c, 0x58, 0xb7]);
test_invalid(&[0xff, 0xd8]);
}
+
+#[test]
+fn from_reports() {
+ // negative compressed evex displacements should not overflow and panic
+ test_display(&[0x62, 0xf2, 0x6d, 0xac, 0x00, 0x59, 0xa7], "vpshufb ymm3{k4}{z}, ymm2, ymmword [bx + di - 0xb20]");
+}