From e53ff4ab81f02b0770a2192801b17a70f13723f0 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Mon, 24 Aug 2020 12:39:16 +0200 Subject: [PATCH 1/2] fix OOB arithmetic in ASCII encoding --- src/ascii.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ascii.rs b/src/ascii.rs index 19d980ca..d1259f85 100644 --- a/src/ascii.rs +++ b/src/ascii.rs @@ -220,7 +220,7 @@ macro_rules! basic_latin_alu { let dst_until_alignment = (ALU_ALIGNMENT - ((dst as usize) & ALU_ALIGNMENT_MASK)) & ALU_ALIGNMENT_MASK; - if (src.add(dst_until_alignment) as usize) & ALU_ALIGNMENT_MASK != 0 { + if (src.wrapping_add(dst_until_alignment) as usize) & ALU_ALIGNMENT_MASK != 0 { break; } dst_until_alignment From a960fafff9fea197a318e926328442bec5b6f6af Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Mon, 24 Aug 2020 14:10:49 +0200 Subject: [PATCH 2/2] more wrapping arithmetic in ascii.rs --- src/ascii.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ascii.rs b/src/ascii.rs index d1259f85..a6b799f7 100644 --- a/src/ascii.rs +++ b/src/ascii.rs @@ -291,7 +291,7 @@ macro_rules! latin1_alu { let src_until_alignment = (ALU_ALIGNMENT - ((src as usize) & ALU_ALIGNMENT_MASK)) & ALU_ALIGNMENT_MASK; - if (dst.add(src_until_alignment) as usize) & ALU_ALIGNMENT_MASK != 0 { + if (dst.wrapping_add(src_until_alignment) as usize) & ALU_ALIGNMENT_MASK != 0 { break; } src_until_alignment @@ -300,7 +300,7 @@ macro_rules! latin1_alu { let dst_until_alignment = (ALU_ALIGNMENT - ((dst as usize) & ALU_ALIGNMENT_MASK)) & ALU_ALIGNMENT_MASK; - if (src.add(dst_until_alignment) as usize) & ALU_ALIGNMENT_MASK != 0 { + if (src.wrapping_add(dst_until_alignment) as usize) & ALU_ALIGNMENT_MASK != 0 { break; } dst_until_alignment