From adf06e2b9c8fde577254b348bdc920ba6409b33a Mon Sep 17 00:00:00 2001 From: LemonJ <1632798336@qq.com> Date: Wed, 9 Oct 2024 20:00:40 +0800 Subject: [PATCH 1/4] add senryx type pre-processing --- rap/src/analysis/senryx.rs | 47 +++++++++---------- .../senryx/contracts/abstract_state.rs | 19 ++++++-- rap/src/analysis/senryx/contracts/checker.rs | 12 ++--- rap/src/analysis/senryx/contracts/contract.rs | 10 ++-- rap/src/analysis/senryx/matcher.rs | 33 +++++++++++++ rap/src/analysis/senryx/visitor.rs | 31 ++++++++---- 6 files changed, 101 insertions(+), 51 deletions(-) create mode 100644 rap/src/analysis/senryx/matcher.rs diff --git a/rap/src/analysis/senryx.rs b/rap/src/analysis/senryx.rs index 08dd8e4..8d9c9f7 100644 --- a/rap/src/analysis/senryx.rs +++ b/rap/src/analysis/senryx.rs @@ -1,9 +1,11 @@ pub mod visitor; pub mod contracts; +pub mod matcher; -use crate::analysis::unsafety_isolation::hir_visitor::{ContainsUnsafe, RelatedFnCollector}; +use crate::analysis::unsafety_isolation::{hir_visitor::{ContainsUnsafe, RelatedFnCollector}, UnsafetyIsolationCheck}; use rustc_hir::def_id::DefId; use rustc_middle::ty::TyCtxt; +use visitor::BodyVisitor; pub struct SenryxCheck<'tcx> { pub tcx: TyCtxt<'tcx>, @@ -34,38 +36,33 @@ impl<'tcx> SenryxCheck<'tcx>{ } pub fn check_soundness(&self, def_id: DefId) { - + self.pre_handle_type(def_id); println!("Find unsound safe api, def_id: {:?}, location: {:?}, ",def_id, def_id); } pub fn annotate_safety(&self, def_id: DefId) { - + self.pre_handle_type(def_id); println!("Annotate unsafe api, def_id: {:?}, location: {:?}, ",def_id, def_id); } - //retval: 0-constructor, 1-method, 2-function - pub fn get_type(&self,def_id: DefId) -> usize{ - let tcx = self.tcx; - let mut node_type = 2; - if let Some(assoc_item) = tcx.opt_associated_item(def_id) { - if assoc_item.fn_has_self_parameter { - node_type = 1; - } else if !assoc_item.fn_has_self_parameter { - let fn_sig = tcx.fn_sig(def_id).skip_binder(); - let output = fn_sig.output().skip_binder(); - if output.is_param(0) { - node_type = 0; - } - if let Some(assoc_item) = tcx.opt_associated_item(def_id) { - if let Some(impl_id) = assoc_item.impl_container(tcx) { - let ty = tcx.type_of(impl_id).skip_binder(); - if output == ty{ - node_type = 0; - } - } - } + pub fn pre_handle_type(&self, def_id: DefId) { + let mut uig_checker = UnsafetyIsolationCheck::new(self.tcx); + let func_type = uig_checker.get_type(def_id); + let mut body_visitor = BodyVisitor::new(self.tcx); + if func_type == 1 { + let func_cons = uig_checker.search_constructor(def_id); + for func_con in func_cons { + body_visitor.path_forward_check(func_con); + // TODO: cache fields' states + + // TODO: update method body's states + + // analyze body's states + body_visitor.path_forward_check(def_id); } + } else { + body_visitor.path_forward_check(def_id); } - return node_type; } + } \ No newline at end of file diff --git a/rap/src/analysis/senryx/contracts/abstract_state.rs b/rap/src/analysis/senryx/contracts/abstract_state.rs index 6b75ae5..4ab1eba 100644 --- a/rap/src/analysis/senryx/contracts/abstract_state.rs +++ b/rap/src/analysis/senryx/contracts/abstract_state.rs @@ -1,4 +1,13 @@ -use std::collections::HashSet; +use std::{collections::{HashMap, HashSet}, hash::Hash}; + +#[derive(Debug, PartialEq, PartialOrd, Copy, Clone)] +pub enum Value { + Usize(usize), + Isize(isize), + U32(u32), + Custom(), + // ... +} #[derive(Debug, PartialEq, Eq, Hash, Copy, Clone)] pub enum StateType { @@ -34,19 +43,19 @@ pub enum AlignState { } #[derive(Debug, PartialEq)] -pub struct AbstractStateItem { - pub value: (T,T), +pub struct AbstractStateItem { + pub value: (Value,Value), pub state: HashSet, } pub struct AbstractState { - + pub state_map: HashMap, } impl AbstractState { pub fn new() -> Self { Self { - + state_map: HashMap::new(), } } } \ No newline at end of file diff --git a/rap/src/analysis/senryx/contracts/checker.rs b/rap/src/analysis/senryx/contracts/checker.rs index 44610d3..0c5f6dc 100644 --- a/rap/src/analysis/senryx/contracts/checker.rs +++ b/rap/src/analysis/senryx/contracts/checker.rs @@ -4,20 +4,20 @@ use super::contract::*; use std::collections::HashMap; use std::marker::PhantomData; -struct SliceFromRawPartsChecker{ - variable_contracts: HashMap>>, +pub struct SliceFromRawPartsChecker{ + pub variable_contracts: HashMap>, _marker: PhantomData, } impl SliceFromRawPartsChecker { pub fn new() -> Self { let mut map = HashMap::new(); - map.insert(1, vec![ - Contract::ValueCheck { op: Op::GE, value: 0 }, + map.insert(0, vec![ + Contract::ValueCheck { op: Op::GE, value: Value::Usize(0) }, Contract::StateCheck { op: Op::EQ, state: StateType::AllocatedState(AllocatedState::Alloc) }, ]); - map.insert(2, vec![ - Contract::ValueCheck { op: Op::LE, value: (isize::MAX)/(mem::size_of::() as isize) }, + map.insert(1, vec![ + Contract::ValueCheck { op: Op::LE, value: Value::Isize((isize::MAX)/(mem::size_of::() as isize)) }, ]); Self { variable_contracts: map, diff --git a/rap/src/analysis/senryx/contracts/contract.rs b/rap/src/analysis/senryx/contracts/contract.rs index b6fc782..97de9a5 100644 --- a/rap/src/analysis/senryx/contracts/contract.rs +++ b/rap/src/analysis/senryx/contracts/contract.rs @@ -2,19 +2,19 @@ use super::abstract_state::*; use crate::analysis::senryx::contracts::state_lattice::Lattice; #[derive(Debug, PartialEq, Copy, Clone)] -pub enum Contract { - ValueCheck { op: Op, value: T }, +pub enum Contract { + ValueCheck { op: Op, value: Value }, StateCheck { op: Op, state: StateType }, } -pub fn check_contract(contract: Contract, abstate: &AbstractStateItem) -> bool { +pub fn check_contract(contract: Contract, abstate_item: &AbstractStateItem) -> bool { match contract { Contract::ValueCheck {op, value} => { - return handle_value_op(&abstate.value, op, value); + return handle_value_op(&abstate_item.value, op, value); }, Contract::StateCheck {op, state} => { - for ab_state in &abstate.state { + for ab_state in &abstate_item.state { if handle_state_op(*ab_state, op, state) { return true; } diff --git a/rap/src/analysis/senryx/matcher.rs b/rap/src/analysis/senryx/matcher.rs new file mode 100644 index 0000000..f829f3c --- /dev/null +++ b/rap/src/analysis/senryx/matcher.rs @@ -0,0 +1,33 @@ +use rustc_middle::mir::Operand; + +use super::contracts::{abstract_state::AbstractState, checker::SliceFromRawPartsChecker, contract::check_contract}; + +pub fn match_unsafe_api_and_check_contracts(func_name: &str, args:&Vec, abstate:&AbstractState) { + match func_name { + "slice" => { + let checker: SliceFromRawPartsChecker = SliceFromRawPartsChecker::new(); + for (idx, contracts_vec) in checker.variable_contracts { + for contract in contracts_vec { + let arg_place = get_arg_place(&args[idx]); + if arg_place == 0 { + return + } + if let Some(abstate_item) = abstate.state_map.get(&arg_place){ + if !check_contract(contract, abstate_item){ + println!("Checking contract failed! ---- {:?}",contract); + } + } + } + } + } + _ => { return } + } +} + +pub fn get_arg_place(arg: &Operand) -> usize { + match arg { + Operand::Move(place) => { place.local.as_usize() } + Operand::Copy(place) => { place.local.as_usize() } + _ => { 0 } + } +} \ No newline at end of file diff --git a/rap/src/analysis/senryx/visitor.rs b/rap/src/analysis/senryx/visitor.rs index 6081f89..2bd57be 100644 --- a/rap/src/analysis/senryx/visitor.rs +++ b/rap/src/analysis/senryx/visitor.rs @@ -1,11 +1,25 @@ -use super::super::senryx::SenryxCheck; +use super::contracts::abstract_state::AbstractState; +use super::matcher::match_unsafe_api_and_check_contracts; +use rustc_middle::ty::TyCtxt; use rustc_middle::{ ty, mir::{self, ProjectionElem, Terminator, TerminatorKind, Operand, Statement, StatementKind, Place, Rvalue, AggregateKind, BasicBlockData, BasicBlock}, }; use rustc_hir::def_id::DefId; -impl<'tcx> SenryxCheck<'tcx> { +pub struct BodyVisitor<'tcx> { + pub tcx: TyCtxt<'tcx>, + pub abstract_states: AbstractState, +} + +impl<'tcx> BodyVisitor<'tcx> { + pub fn new(tcx: TyCtxt<'tcx>) -> Self{ + Self{ + tcx, + abstract_states: AbstractState::new(), + } + } + pub fn path_forward_check(&mut self, def_id: DefId) { let paths = self.get_all_paths(def_id); let body = self.tcx.optimized_mir(def_id); @@ -35,13 +49,14 @@ impl<'tcx> SenryxCheck<'tcx> { pub fn path_analyze_terminator(&mut self, terminator:&Terminator<'tcx>, _path_index:usize, _bb_index: usize) { match &terminator.kind { - TerminatorKind::Call{func, args: _, destination: _, target: _, ..} => { + TerminatorKind::Call{func, args, destination: _, target: _, ..} => { let func_name = format!("{:?}",func); - self.match_unsafe_api_and_check_contracts(func_name); + match_unsafe_api_and_check_contracts(func_name.as_str(), args, &self.abstract_states); //handle inter analysis if let Operand::Constant(func_constant) = func{ - if let ty::FnDef(ref _callee_def_id, _) = func_constant.const_.ty().kind() { + if let ty::FnDef(ref _callee_def_id, raw_list) = func_constant.const_.ty().kind() { + println!("{:?}",raw_list); //TODO:path_inter_analyze } } @@ -158,14 +173,10 @@ impl<'tcx> SenryxCheck<'tcx> { return current_local; } - pub fn match_unsafe_api_and_check_contracts(&mut self, _func_name: String) { - - } - pub fn get_all_paths(&self, def_id: DefId) -> Vec> { let results = Vec::new(); let _body = self.tcx.optimized_mir(def_id); - // todo: get all paths in a body + // TODO: get all paths in a body results } From 583ea1a774e0df62d0a64ad01cdecdfcfa0f5a25 Mon Sep 17 00:00:00 2001 From: LemonJ <1632798336@qq.com> Date: Wed, 9 Oct 2024 21:28:54 +0800 Subject: [PATCH 2/4] modify senryx checker processor & add a test file for senryx --- rap/src/analysis/senryx/contracts/checker.rs | 11 +++++ rap/src/analysis/senryx/matcher.rs | 41 +++++++++------- rap/src/analysis/senryx/visitor.rs | 21 +++++--- .../slice_from_raw_parts/Cargo.lock | 7 +++ .../slice_from_raw_parts/Cargo.toml | 6 +++ .../slice_from_raw_parts/output.dot | 0 ...2024-10-09T12:41:40.429343069Z-2181137.txt | 34 +++++++++++++ .../slice_from_raw_parts/src/cfg.png | Bin 0 -> 266400 bytes .../slice_from_raw_parts/src/main.rs | 17 +++++++ .../slice_from_raw_parts/src/output.dot | 45 ++++++++++++++++++ 10 files changed, 158 insertions(+), 24 deletions(-) create mode 100644 test cases/senryx_tests/slice_from_raw_parts/Cargo.lock create mode 100644 test cases/senryx_tests/slice_from_raw_parts/Cargo.toml create mode 100644 test cases/senryx_tests/slice_from_raw_parts/output.dot create mode 100644 test cases/senryx_tests/slice_from_raw_parts/rustc-ice-2024-10-09T12:41:40.429343069Z-2181137.txt create mode 100644 test cases/senryx_tests/slice_from_raw_parts/src/cfg.png create mode 100644 test cases/senryx_tests/slice_from_raw_parts/src/main.rs create mode 100644 test cases/senryx_tests/slice_from_raw_parts/src/output.dot diff --git a/rap/src/analysis/senryx/contracts/checker.rs b/rap/src/analysis/senryx/contracts/checker.rs index 0c5f6dc..f86fdaf 100644 --- a/rap/src/analysis/senryx/contracts/checker.rs +++ b/rap/src/analysis/senryx/contracts/checker.rs @@ -4,11 +4,22 @@ use super::contract::*; use std::collections::HashMap; use std::marker::PhantomData; + +pub trait Checker { + fn variable_contracts(&self) -> &HashMap>; +} + pub struct SliceFromRawPartsChecker{ pub variable_contracts: HashMap>, _marker: PhantomData, } +impl Checker for SliceFromRawPartsChecker { + fn variable_contracts(&self) -> &HashMap> { + &self.variable_contracts + } +} + impl SliceFromRawPartsChecker { pub fn new() -> Self { let mut map = HashMap::new(); diff --git a/rap/src/analysis/senryx/matcher.rs b/rap/src/analysis/senryx/matcher.rs index f829f3c..ed6c22b 100644 --- a/rap/src/analysis/senryx/matcher.rs +++ b/rap/src/analysis/senryx/matcher.rs @@ -1,26 +1,33 @@ use rustc_middle::mir::Operand; -use super::contracts::{abstract_state::AbstractState, checker::SliceFromRawPartsChecker, contract::check_contract}; +use super::contracts::{abstract_state::AbstractState, checker::{Checker, SliceFromRawPartsChecker}, contract::check_contract}; -pub fn match_unsafe_api_and_check_contracts(func_name: &str, args:&Vec, abstate:&AbstractState) { - match func_name { - "slice" => { - let checker: SliceFromRawPartsChecker = SliceFromRawPartsChecker::new(); - for (idx, contracts_vec) in checker.variable_contracts { - for contract in contracts_vec { - let arg_place = get_arg_place(&args[idx]); - if arg_place == 0 { - return - } - if let Some(abstate_item) = abstate.state_map.get(&arg_place){ - if !check_contract(contract, abstate_item){ - println!("Checking contract failed! ---- {:?}",contract); - } - } +pub fn match_unsafe_api_and_check_contracts(func_name: &str, args:&Vec, abstate:&AbstractState, _ty: T) { + let checker: Option> = match func_name { + "std::slice::from_raw_parts::<'_, u8>" => { + Some(Box::new(SliceFromRawPartsChecker::::new())) + } + _ => None, + }; + + if let Some(c) = checker { + process_checker(&*c, args, abstate); + } +} + +fn process_checker(checker: &dyn Checker, args: &Vec, abstate: &AbstractState) { + for (idx, contracts_vec) in checker.variable_contracts().iter() { + for contract in contracts_vec { + let arg_place = get_arg_place(&args[*idx]); + if arg_place == 0 { + return + } + if let Some(abstate_item) = abstate.state_map.get(&arg_place){ + if !check_contract(*contract, abstate_item){ + println!("Checking contract failed! ---- {:?}",contract); } } } - _ => { return } } } diff --git a/rap/src/analysis/senryx/visitor.rs b/rap/src/analysis/senryx/visitor.rs index 2bd57be..706fb83 100644 --- a/rap/src/analysis/senryx/visitor.rs +++ b/rap/src/analysis/senryx/visitor.rs @@ -3,6 +3,7 @@ use super::matcher::match_unsafe_api_and_check_contracts; use rustc_middle::ty::TyCtxt; use rustc_middle::{ ty, + ty::GenericArgKind, mir::{self, ProjectionElem, Terminator, TerminatorKind, Operand, Statement, StatementKind, Place, Rvalue, AggregateKind, BasicBlockData, BasicBlock}, }; use rustc_hir::def_id::DefId; @@ -10,6 +11,7 @@ use rustc_hir::def_id::DefId; pub struct BodyVisitor<'tcx> { pub tcx: TyCtxt<'tcx>, pub abstract_states: AbstractState, + pub scc_sub_blocks: Vec>, } impl<'tcx> BodyVisitor<'tcx> { @@ -17,6 +19,7 @@ impl<'tcx> BodyVisitor<'tcx> { Self{ tcx, abstract_states: AbstractState::new(), + scc_sub_blocks: Vec::new(), } } @@ -29,11 +32,10 @@ impl<'tcx> BodyVisitor<'tcx> { continue; } self.path_analyze_block(&body.basic_blocks[BasicBlock::from_usize(*block_index)].clone(), index, *block_index); - // TODO: analyze scc blocks // let tem_scc_sub_blocks = self.scc_sub_blocks[*block_index].clone(); // if tem_scc_sub_blocks.len() > 0{ // for sub_block in &tem_scc_sub_blocks { - // self.path_analyze_block(tcx, &self.body.as_ref().basic_blocks[BasicBlock::from_usize(*sub_block)].clone(), index, *block_index,direction); + // self.path_analyze_block(&body.basic_blocks[BasicBlock::from_usize(*sub_block)].clone(), index, *block_index); // } // } } @@ -51,12 +53,16 @@ impl<'tcx> BodyVisitor<'tcx> { match &terminator.kind { TerminatorKind::Call{func, args, destination: _, target: _, ..} => { let func_name = format!("{:?}",func); - match_unsafe_api_and_check_contracts(func_name.as_str(), args, &self.abstract_states); - - //handle inter analysis if let Operand::Constant(func_constant) = func{ if let ty::FnDef(ref _callee_def_id, raw_list) = func_constant.const_.ty().kind() { - println!("{:?}",raw_list); + for generic_arg in raw_list.iter() { + match generic_arg.unpack() { + GenericArgKind::Type(ty) => { + match_unsafe_api_and_check_contracts(func_name.as_str(), args, &self.abstract_states, ty); + } + _ => {} + } + } //TODO:path_inter_analyze } } @@ -174,7 +180,8 @@ impl<'tcx> BodyVisitor<'tcx> { } pub fn get_all_paths(&self, def_id: DefId) -> Vec> { - let results = Vec::new(); + // let results = Vec::new(); + let results = vec![vec![0,1,2,3,4,5,6,7,8]]; let _body = self.tcx.optimized_mir(def_id); // TODO: get all paths in a body results diff --git a/test cases/senryx_tests/slice_from_raw_parts/Cargo.lock b/test cases/senryx_tests/slice_from_raw_parts/Cargo.lock new file mode 100644 index 0000000..4e9b0b6 --- /dev/null +++ b/test cases/senryx_tests/slice_from_raw_parts/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "slice_from_raw_parts" +version = "0.1.0" diff --git a/test cases/senryx_tests/slice_from_raw_parts/Cargo.toml b/test cases/senryx_tests/slice_from_raw_parts/Cargo.toml new file mode 100644 index 0000000..870fa89 --- /dev/null +++ b/test cases/senryx_tests/slice_from_raw_parts/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "slice_from_raw_parts" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/test cases/senryx_tests/slice_from_raw_parts/output.dot b/test cases/senryx_tests/slice_from_raw_parts/output.dot new file mode 100644 index 0000000..e69de29 diff --git a/test cases/senryx_tests/slice_from_raw_parts/rustc-ice-2024-10-09T12:41:40.429343069Z-2181137.txt b/test cases/senryx_tests/slice_from_raw_parts/rustc-ice-2024-10-09T12:41:40.429343069Z-2181137.txt new file mode 100644 index 0000000..c2d41ac --- /dev/null +++ b/test cases/senryx_tests/slice_from_raw_parts/rustc-ice-2024-10-09T12:41:40.429343069Z-2181137.txt @@ -0,0 +1,34 @@ +thread 'rustc' panicked at src/analysis/senryx/visitor.rs:34:61: +index out of bounds: the len is 0 but the index is 0 +stack backtrace: + 0: 0x78c38b304f7b - std::backtrace::Backtrace::create::hd127b7c6d6cd03e5 + 1: 0x78c38b304ee0 - std::backtrace::Backtrace::force_capture::h417127df1e2d51e0 + 2: 0x78c38bf6e3ea - as core[1d3bda36d657c2e8]::ops::function::Fn<(&dyn for<'a, 'b> core[1d3bda36d657c2e8]::ops::function::Fn<(&'a core[1d3bda36d657c2e8]::panic::panic_info::PanicInfo<'b>,), Output = ()> + core[1d3bda36d657c2e8]::marker::Sync + core[1d3bda36d657c2e8]::marker::Send, &core[1d3bda36d657c2e8]::panic::panic_info::PanicInfo)>>::call + 3: 0x78c38b316d19 - std::panicking::rust_panic_with_hook::ha10fdbfc5a8fd181 + 4: 0x78c38b32d191 - std::panicking::begin_panic_handler::{{closure}}::h1e0422a4a93f10ef + 5: 0x78c38b32cfa6 - std::sys_common::backtrace::__rust_end_short_backtrace::h37557d4428f73607 + 6: 0x78c38b316952 - rust_begin_unwind + 7: 0x78c38b2d5cf5 - core::panicking::panic_fmt::he860d7c2092d0804 + 8: 0x78c38b2d5f12 - core::panicking::panic_bounds_check::ha0bd35ae879439cb + 9: 0x63f3800826b8 - rap::analysis::senryx::visitor::BodyVisitor::path_forward_check::hd4a21b1274954e2f + 10: 0x63f3800629c5 - rap::analysis::senryx::SenryxCheck::pre_handle_type::h6ed222a4c1d2291c + 11: 0x63f380062661 - rap::analysis::senryx::SenryxCheck::start::h659e0d62aac16b66 + 12: 0x63f3800632b7 - rap::start_analyzer::ha0e73323cc9a5cc9 + 13: 0x63f380062c24 - ::after_analysis::hebe0f47b5c6b2bdd + 14: 0x78c38bf729de - ::enter::, rustc_span[44b2500b42daeb56]::ErrorGuaranteed>> + 15: 0x78c38bf6b48d - std[eb6e579615efab8d]::sys_common::backtrace::__rust_begin_short_backtrace::, rustc_driver_impl[5383af9c25314365]::run_compiler::{closure#1}>::{closure#0}, core[1d3bda36d657c2e8]::result::Result<(), rustc_span[44b2500b42daeb56]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[1d3bda36d657c2e8]::result::Result<(), rustc_span[44b2500b42daeb56]::ErrorGuaranteed>> + 16: 0x78c38bf8c2a4 - std[eb6e579615efab8d]::panicking::try::, core[1d3bda36d657c2e8]::panic::unwind_safe::AssertUnwindSafe<::spawn_unchecked_, rustc_driver_impl[5383af9c25314365]::run_compiler::{closure#1}>::{closure#0}, core[1d3bda36d657c2e8]::result::Result<(), rustc_span[44b2500b42daeb56]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[1d3bda36d657c2e8]::result::Result<(), rustc_span[44b2500b42daeb56]::ErrorGuaranteed>>::{closure#1}::{closure#0}>> + 17: 0x78c38bf6d2f3 - <::spawn_unchecked_, rustc_driver_impl[5383af9c25314365]::run_compiler::{closure#1}>::{closure#0}, core[1d3bda36d657c2e8]::result::Result<(), rustc_span[44b2500b42daeb56]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[1d3bda36d657c2e8]::result::Result<(), rustc_span[44b2500b42daeb56]::ErrorGuaranteed>>::{closure#1} as core[1d3bda36d657c2e8]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} + 18: 0x78c38b2f10b2 - std::sys::unix::thread::Thread::new::thread_start::h384c95156cb20553 + 19: 0x78c389e94ac3 - start_thread + at ./nptl/pthread_create.c:442:8 + 20: 0x78c389f26850 - __GI___clone3 + at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81 + 21: 0x0 - + + +rustc version: 1.75.0-dev +platform: x86_64-unknown-linux-gnu + +query stack during panic: +end of query stack diff --git a/test cases/senryx_tests/slice_from_raw_parts/src/cfg.png b/test cases/senryx_tests/slice_from_raw_parts/src/cfg.png new file mode 100644 index 0000000000000000000000000000000000000000..ea3f8e0cf8bd3545c6ab9f069b41ef39ad487fd0 GIT binary patch literal 266400 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�Nvdpc6RfJFa%2n@!TKTRGOz*@@Y ztSI{frkC-U_UPVyBLlW>UAwl1_)>FVSZAbP@-vJ4xN-Z@MM?Gh;`Qq>oJcS7^T!fy z)|{L}vjYG6F`Lj|+M*+TQCMgO=Z<936#t{ttlQbCX!Ik`*Up^%+q7eoCW3f@A^Sj~ zNd*YV{bQFd>k#GWS&;$xBOe??!(gt5CVamIEBj~6>No4#Hq>~Q+hqH1aoJPPObR&) z8?wVh<3YY7b$I?D9V7HtL_9Mb)RPw zc?-`w9x0vtXU@jt;5qTV|X#o)&&)PAiXFR(CMwZh~ z!>&aCb~b?_t{lqfIrK|gtEyUY1Ve$ybX|kN1_^5AAD(_5lHlXlu`l@bte*396k-KanMU6f>lxqNk|VnX;G(}&4>dGyM;a2HH+}tZPT!Ud;;pT5RQDqj z8Rq;c3xhE`&6;#D+>F}R#VW!6BG?FJnGEpa+z_y`Yja@_5Dgn6sebT((e@_bT;}cn zw`y9ZT}`5$N~?B+_M}x!o9e4w8$yLdq-j;szLFN&B`HfprV?#PiLw?IC8S6jJ+G6Q zxo75{`+4r)|M&bmI__hRTe!a0b$vdc^L%gTU6+#6Y_GsGy;oR`E20ucOV-QckW7>U z)j(gn%6I?Q4yg=(7Ayc76~5UAqz$)Cd}N);xu%30vA32EwB}b~=sVc` zXyJ_~1u;3{%k87DSa%;b=)lFzyy%#{mzE@)mFJnirV@Kq5?+jfO8v|mV)7D94uQb4 z!op08rE>h&sL`9~bxBj8Mv(($(B~IT2dsK`Y)_wBOn6_tjadp%-PZ}We|Plzw~=O1 zM~}9J@sZ`(=(vIH_+zq=^WB~_Zh z@!OsnKm0-N?h6a3T7;ottdXp4K5<2KZ3eC3U&E6x^xt}s|S4?R#($mawrtT52&u4SKe`(INXAcOHJulT?*p8kyAA!W0 z@-J%NHg=XPJ=j}7^#3H`I6AU9!G2x$&8H=8k>K9k{TBCDaunw^Xp?~XLb!`3qW&K@6akX|N1XQ<6=d1F!xCQ!!qa zn)MS4CaA8sX&_`|U*_8SwQ=1IYC1?qP}6U(AaIm!d>LNP<*U=!r;0cOFu##5=r9f>-LV|A*bRL@X)Z>-r*K?e{#+G7ogt@Iof{%EdNp19+(}QWf zlJ9`%j~2*WJ9)~6^x;|?f^I=Do+%3-jCeN1Y1^)S`RmgejLI9nJ@{c zId}1HAlU#cl6TFR=-Co#_=liiMxe-h_v{%?8PjimbR9*g^(?QHnQg5~FCzed0IPu7 zd~6aWUDUVt^$?pJ1vh<-pwT3jm(a7%!nz=;-op4IQ}mHCO=c~C9JPZVGT-Mv!L&|6 zBdrZ3_UeHwzLQYG`RNY%$y!e2%-y+n&mAm%JRt}yIz#z7B0!nfG=k%*MXYL{LOa8Z zlE|LnW3F-7Z3`bv(Vj@iBf!4e%uv{3;aaWIuk2!b9d-QY2fU)4!PEd$g9~?!jP)LQ zXF(tPIn7hsZYU|;e+ilRSYdqWY|r`opG1+rhXoz{zR5#tZej^|rx2P}PcHsKG1|7} zz2C8lAe6@|92`!gUa(AhJyEV!>4&vqt$Cx}*U+@6`LI0OM!^q4wJOd8C%A>LK<#{* zfi8*EzuMXLUD`hERNH5}jc$zUqvn;&WaW_>qWGF{pVvL8A}2}GxT{dZ46BFUZh4g8 zQoaIu2^dT3bPRd1;+k_<{3pyOieQUoFJHV+)k@%0`xzo>^w}vPEqJF!Q(?k+quHg2 z^#$~uM2wWt;Rh@C+W(3T-Y9uaoi}o5mf;5wE^`(@Q zfzCjzxzUTkE{GYKZh3W(m3q+NpvDhVHb#f&ydGb&?BORc;WsJ3413us))c&WabkJE zzaI3kYm}Grx?3#uf>6iOG=6c!AbZm*%hde|1GZdEzgw->l84@-rn@#yP2r#%%b<V}^8*hedD9NbPqQYAL>2A!DDP)q+(1{Kkq0a39Bi)VPg zD$7?hJ8$L!u1v2V!`>G3k?PxgV53L_Xx?akM!%3a0x=QbKUOOux0NT-qTn0)n(KtK ztd)2LnsMO;#cF`TF9#MxQ7pzzAO;D9%gb9LF=r6&?PGSXB(qjSum{m9VNJ4nHSqs; ziP0t)Sd`wrz%`1mObYPX70YB94oUwHpTlskGn67C-Ztp5%BIX%j+wxsdf-*1QTQ_Y z&GzyN{eE^$>#4dfh4qH38f1}XM}IseN4YWZ45RLEQQh0Od1R77O?cW?Ya0Vd%snO! zd!5#{{_A{Rq2yIo=H@bK6`z`n{#a-0P5M6$z(5T19E>1yCb{L`JM$zL&$I!qz~{LY z&5}fYiQCLR26!Xj@rv;FE@{J{PI@UdYU`nc78ITNo43QgiyhyOUdkdg+g9!0!9_by zHil=2ni$2fdh<~~91#+E2Z|v=O^Kr=)BwcF%C_1--YX8FxnhF9yr=>G^2c9OA6ety zTpJZNmb3Im14P-*7=p}(qNx5YEf0!x)rqg&r_#vL~!ig)D{vBxfF?mHzctR zbC3q+BAD4LtBQS`s_7rMUp@24{J`k}Ica|2Mab0(dYrCA6|)mowe=d~Fn!t2#6fY< z1n;(R+2bauwWviYV=P;zm}DTjvm2ChwXglgYt~Ttk|IlcOf|h0I)X(mrU;#=UfIhd z&0_2|hOw|Dl}f@Yp&rmju35SiO{CH>jEuEhiXS$6ou;x0eqcQUjtU~#^3$^t%Uily#3rku5OqDl96|aj17Q=yJPAz(K84|B>{p=g?S3EJ2+bGW|jbk!MrBO4Vfo5||H-vay zy=uU~Ajus7UelnDB>}?xL;p4@!NH4X4rT-&5&)Sl^ENB0EhP00?`5^uzJ0qC;jo*b zk51G#9c`B)b#<$GZrmH$K!_1N`o;Yu+lgiOSE;+oG#^B!dPuK&qpE-oBHj<-&|DC= z&Ye52WyTqzM488i*q8w*liCj=*OYDbCiujI^mL{lZxLHRCM8rieJ5(Q31Dr&$dTWF z1ADzB!;)Jy#BcTvi92C66qEkyi>Gr|?g5fv;NyADxc}Us)rhxl1@-Q9;CXiTI;x9y zg9goxG+uJ`|0=qu1O_S39cvR>xXps7{#5rc6}spsh=Fvv^qgW8ZlR_~t~p;DD;H)( z?Z7T6)Wi30xq}@YmM*jTpqjEzOVf??CeAirZ_G|ThDpjDPoe6e0WIC z_Q0L65hFljP$g~QxmXTpc#4VHjhWY00|}ikG7Okt$;u{Nd1!8J{grR~mXycg(Jl zGp~oxDx$IRh}!v-%rA!T}p<8--{rm4E+{5^A|6P2J(UiD~m#0sjOk^aOR2n3`8+-QKLNgJh zax%X&B=xN3aGLfRKzP9_Jq^ghrGVWvPScnCn+FKZ(z*}+KgJX-v;K-H7JQ6dVS2&z z-j3W5#>?jM1Q=$_`0=NR^x950awjF_0JQlSn09Kb)ODjixs2;@J|MIi;Y4SltUK%) z74*e)*|LlJJ)rCnOxfL{@ z-cbz_rY|O9E?RQoVLhoPJ@s1;J@R7p?J68|hs)bJ4%WIcPxfriEmQ3~XiY?YOwX-CFF&66u}+;K^umY&&l`u@ zWa-$~-Da;Q>7_8l^`AYje#G@_T2}ov;|G{|zuwqjoDsv8@svZaiDH z$9u2;4Y+)Aw9SNzmkaNL6X7`o3;i*=vi%+S^iy#kIk4plD*xx;u0Pa?zx`i}I!Jx= z$3Nh|)P9^0-uF-6qiSY!V^86>K2a>vb)Ed3_V_#w8@g!g+X@98qV>l`MG~zeGPEl^xO>cd{ldZtXvC zz>Gox^x=k-8w@0ffEA%io1fdM;=80EO6Dekr^fq-I|R&0r~M0<#Hs^P-juSA9(!}85--D=&fZ`HU020bK z(U=+ejhwa|sDx0lgZd4;Mf=Ts3&E6dOV{0aBdLqMBTY0K37s#wtt%g1vff|e&8MHC z5sHbiZU=`d{4Hl7F5S%%GR0}5Co{V$-=;lD$p1?Pr4y#GU<*bY^%jH~1hvxymdZ_kuB z3-KnvTpDr#`N)CRn`A+puSYI{Btxk;+0rj$Ftc_(G44G$8(}_K+9v}GfHPts7x6hK z9S^(oadPLMXjruETev!rD$5Jfhye>tC>vyS1d`e<`@p|BfAM$J=Tx!LHu=MRrvLrn z=GQiVQ!FlUl$0*srA>w!y=OGsM5Sv)mP-AKVS6iAVY%b~n?LPn@IQl_`9aQ+5fMQl zn9czLEv<-1TSuT{ObB4GK-1J9k7rbXcCwM}pq0$&(ES0!l($5Ed)X6bE}h|8;-!pAB%7hb&0x)du7Bx=gy-tQWS04D=AS5%FqZL^+%lEbipx}!%89KNMwtQ7TtpCsoIh` z-?bNIlvttpvT^6c5w)YzTCVwRT4=(v@L=9zlfg#59FH>S6}j&-l*mA+65E?o+zC|q zjhU~HPf~&nM^UYI=LZKp2n`6`>+0OI(e2K5DV<6j`?(z2HF>V$nM21y zfKfdfUh%LitPZGDA-}!OSi4RU+}G~N@3`-VkYWQACYQ@{MJ2Y2sWeP-j% zkWUDVN@ow22pq+Z-gtf2MMg%NoIhSZt!>6}&Dj|ZXWY2{9&yMs&EHL``&r70< zvbd}$WLh}HURB@{Z#u-rA|5l`965%cfMfDoHE7j;Cp=Wp-T1h;lT7`hi$BqPj`J=uBLHjG!8J{Q zg);0A0dTY;ZbLLPw)aXUYnvr%#ixspcH~2$7u25>ZU>31+<>o34v{|82ZQM?TbYge zUf>q~`jN`4E?FqsjWXKemRmxxf+rma8wWSd@DAjVqYzG>__^~EKr}I2z$z=s+|bfR zL=5n^{oi1RU-Rry?lPim6wOn|u$dPU*9~W4feczt-OrR-HuwFXXQ(w z7|!6Ajhi<=Vh0YsyKT#s<22KE6B14%s3PG(C6W|zYQuin8-w8?o7*Q=qyF+&1aB1$?*7H@$(j=>s|7SX zA#x)Z)ZZr{T}ty&?f;ArI(|z6VQUIhm&qUh1x^ms8C)qZwA8GW7y4}86Z6lW#!V$z z+s}9nvPzu#KJMNg5AX3JGI+emJ%SCVVEf+67T@gxuja%=- z$HA>H_`XRtF;%_$V% zbg=5f6yBKg#ix>O>dYv$^+g9DaJLJ^S#L&2frzkZ)M$7M!gnAY!FfWHB% zOJ?;Q{$?e%3KGmp3< zz2078Rqr@Jgwg=#eyLT7b!RR&vX9B#-6^nYHxKV7h3ddvl*W{!r#?95&3a1V!UXp% zY@go(o4P7Jf7OqfuEwQ%Tb+s_HZMbjY#b?Jr z7>VsaHl?ff7ft2s$omD6C4O4}f`9mo>C^L^FE}iIQ`aQ}?Ew5tEKoKx4KOjy5v>y~ zr`4KyG|>NU5PhRVpG)v=ja6567PGh;H*bErS&B(ZhBa5`*q79CcC*?X)YR~J@h0as z@4*56pFz)g6MqLib65T^5lOR*W<5{bRb8zCZz@s9J2J?B z`+);zncXO-%2Nc2UtfZtJbarua&cO{`b{!S4|7Ry%DPU6mCxRH_) zN`Kq?xE8B~mMNUUe-c`5qewkxw(;-4X!dsq+ByvzqOLWNKusbL2Cux)T8VKBl+^90 zs#m<-T7^QXiwqE<{9Mk|H$C?wZ@&095lj>6m6LqhB}Mm z63MebiXy1n*KL|bG^xarMtNn~^XlxJ$ES1^4}Et$I8a2bj}!?r!6Y15!+8iBT6{&N z9i$nK_kA6rkY@;l4WUKR)o+t%Elw$?w|ZovZDy>3M5M8Syxr-P*90}COiJVK@KZ_c z+Jss`$~?jjt!fB=1X~h3uupj`il4YW`8wY5w4IwVPkV2i0%gsl2?L!FwK*KpG5|4H!B1%9Sf~ zv8B^57wrvyeeeI01GnD_(H1l&4-B_{4trLMT<60y_SKc(PD$GBFudo~(+|qpGRF0X>6$Rm~qa$F*FWc|g$8 za;oBJ;0$;iz}T7N%2}6&c;a_}YC&9hg3aq8tkGF!0Qh}_S8Bl=LLvw#EPT+XOvLh+ zJbztl^+AJ2srEZrP1 z-uZ?nYd4F#8l<1SYuv=U5rIRB9$$|hS>o1lr_-b)L#p9%FQ2MSbPQkP`pMS%wA$Q7 zs;Y@)mi{yRK09A{YFiLF_(Pz5+(n0-G{kxF6osRZi8I!4G@}{}{T_Q}5PaO{&>)v^ zdToZt412*apuN!XL_+C)+J>CsF8cZCjEq@Iqd1or;*G;S+8%Mmisv_Kx?iY0`2q!a zz*v&va9VCfU}1Gif!SIjohBG17`7SD0{5$mT zKOG9_B;JN=fKzN(0d@u-I#LA0GKzg zKGPZPqP{*vSQdM!8#oC6|6S}x?NRCXQf+BlIFX{S4+CR%pX6QQh}n6aK5sQk-Kd%rKcs0rIvL&?`m zPyT-yH^(*!FBf9p)iAUp?AJG#7KB0CPS?(zyPFsAd`s#iU@u9A|MY1Ulv%2N>&xkP zjvnVA$YCG#u-=<_B$w0~>qh5`lxMU(a6nz-(j^FwRgR7*@G?%I1Pb?`9I}-IjRQnR z%Y=;Im>05~E?NLD@Gpy?XAPfi*HW4E6;7=NiMSk#!LPq6aOFxWp1PEn8Wx9(Gd>c6Js)Zg6f4lah1DB;<{|cV4MRQnk2b8E8q3UTB*5sVX4_|P zNqtEA_5;?=`rzlLX&Il27TIEY^wJ8+THxm>5!*g7l9FU-xL`#0i<4J3YutG4+O
  • r~s09$ATk1AY%})NT81Ewc8rP@%T?} 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

    Eb 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 MnlLhQ_}q>E2OIoW4*&oF literal 0 HcmV?d00001 diff --git a/test cases/senryx_tests/slice_from_raw_parts/src/main.rs b/test cases/senryx_tests/slice_from_raw_parts/src/main.rs new file mode 100644 index 0000000..1e20f13 --- /dev/null +++ b/test cases/senryx_tests/slice_from_raw_parts/src/main.rs @@ -0,0 +1,17 @@ +use std::slice; + +fn test1() { + let data: *const u8 = Box::leak(Box::new(0)); + let len: usize = (isize::MAX as usize) / std::mem::size_of::() + 1; + // 'len' is out of the max value and causes a 'bounded' UB + let slice: &[u8] = unsafe { slice::from_raw_parts(data, len) }; + if let Some(last_element) = slice.last() { + println!("Last element: {}", last_element); + } else { + println!("Slice is empty"); + } +} + +fn main() { + test1(); +} \ No newline at end of file diff --git a/test cases/senryx_tests/slice_from_raw_parts/src/output.dot b/test cases/senryx_tests/slice_from_raw_parts/src/output.dot new file mode 100644 index 0000000..c2db9eb --- /dev/null +++ b/test cases/senryx_tests/slice_from_raw_parts/src/output.dot @@ -0,0 +1,45 @@ +digraph __crate__ { +subgraph cluster_Mir_0_4 { + graph [fontname="Courier, monospace"]; + node [fontname="Courier, monospace"]; + edge [fontname="Courier, monospace"]; + label=let _1: *const u8;
    let _2: &ReErased mut u8;
    let mut _3: std::boxed::Box<u8, std::alloc::Global>;
    let _4: usize;
    let mut _5: usize;
    let mut _6: usize;
    let mut _7: usize;
    let mut _8: bool;
    let mut _9: (usize, bool);
    let _10: &ReErased [u8];
    let _11: &ReErased [u8];
    let mut _12: std::option::Option<&ReErased u8>;
    let mut _13: isize;
    let _14: &ReErased u8;
    let _15: ();
    let mut _16: std::fmt::Arguments<ReErased>;
    let mut _17: &ReErased [&ReErased str];
    let mut _18: &ReErased [core::fmt::rt::Argument<ReErased>];
    let _19: &ReErased [core::fmt::rt::Argument<ReErased>; 1_usize];
    let _20: [core::fmt::rt::Argument<ReErased>; 1_usize];
    let mut _21: core::fmt::rt::Argument<ReErased>;
    let _22: &ReErased &ReErased u8;
    let _23: ();
    let mut _24: std::fmt::Arguments<ReErased>;
    let mut _25: &ReErased [&ReErased str];
    let mut _26: &ReErased [&ReErased str; 1_usize];
    let mut _27: &ReErased [&ReErased str; 2_usize];
    debug data => _1;
    debug len => _4;
    debug slice => _10;
    debug last_element => _14;
    >; + bb0__0_4 [shape="none", label=<
    0
    _3 = Box::<u8>::new(const 0_u8)
    >]; + bb1__0_4 [shape="none", label=<
    1
    _2 = Box::<u8>::leak::<'_>(move _3)
    >]; + bb2__0_4 [shape="none", label=<
    2
    _1 = &raw const (*_2)
    _6 = const _ as usize (IntToInt)
    _7 = std::mem::size_of::<u8>()
    >]; + bb3__0_4 [shape="none", label=<
    3
    _8 = Eq(_7, const 0_usize)
    assert(!move _8, "attempt to divide `{}` by zero", _6)
    >]; + bb4__0_4 [shape="none", label=<
    4
    _5 = Div(move _6, move _7)
    _9 = CheckedAdd(_5, const 1_usize)
    assert(!move (_9.1: bool), "attempt to compute `{} + {}`, which would overflow", move _5, const 1_usize)
    >]; + bb5__0_4 [shape="none", label=<
    5
    _4 = move (_9.0: usize)
    _11 = std::slice::from_raw_parts::<'_, u8>(_1, _4)
    >]; + bb6__0_4 [shape="none", label=<
    6
    _10 = _11
    _12 = core::slice::<impl [u8]>::last(_10)
    >]; + bb7__0_4 [shape="none", label=<
    7
    _13 = discriminant(_12)
    switchInt(move _13)
    >]; + bb8__0_4 [shape="none", label=<
    8
    _14 = ((_12 as Some).0: &u8)
    _27 = const _
    _17 = _27 as &[&str] (PointerCoercion(Unsize))
    _22 = &_14
    _21 = core::fmt::rt::Argument::<'_>::new_display::<&u8>(_22)
    >]; + bb9__0_4 [shape="none", label=<
    9
    _20 = [move _21]
    _19 = &_20
    _18 = _19 as &[core::fmt::rt::Argument<'_>] (PointerCoercion(Unsize))
    _16 = Arguments::<'_>::new_v1(move _17, move _18)
    >]; + bb10__0_4 [shape="none", label=<
    10
    _15 = _print(move _16)
    >]; + bb11__0_4 [shape="none", label=<
    11
    _26 = const _
    _25 = _26 as &[&str] (PointerCoercion(Unsize))
    _24 = Arguments::<'_>::new_const(move _25)
    >]; + bb12__0_4 [shape="none", label=<
    12
    _23 = _print(move _24)
    >]; + bb13__0_4 [shape="none", label=<
    13
    return
    >]; + bb0__0_4 -> bb1__0_4 [label="return"]; + bb1__0_4 -> bb2__0_4 [label="return"]; + bb2__0_4 -> bb3__0_4 [label="return"]; + bb3__0_4 -> bb4__0_4 [label="success"]; + bb4__0_4 -> bb5__0_4 [label="success"]; + bb5__0_4 -> bb6__0_4 [label="return"]; + bb6__0_4 -> bb7__0_4 [label="return"]; + bb7__0_4 -> bb8__0_4 [label="1"]; + bb7__0_4 -> bb11__0_4 [label="otherwise"]; + bb8__0_4 -> bb9__0_4 [label="return"]; + bb9__0_4 -> bb10__0_4 [label="return"]; + bb10__0_4 -> bb13__0_4 [label="return"]; + bb11__0_4 -> bb12__0_4 [label="return"]; + bb12__0_4 -> bb13__0_4 [label="return"]; +} +subgraph cluster_Mir_0_5 { + graph [fontname="Courier, monospace"]; + node [fontname="Courier, monospace"]; + edge [fontname="Courier, monospace"]; + label=let _1: ();
    >; + bb0__0_5 [shape="none", label=<
    0
    _1 = test1()
    >]; + bb1__0_5 [shape="none", label=<
    1
    return
    >]; + bb0__0_5 -> bb1__0_5 [label="return"]; +} +} From 55a980d8d35765bfc2271ecbbb6d9d365bc13104 Mon Sep 17 00:00:00 2001 From: LemonJ <1632798336@qq.com> Date: Fri, 11 Oct 2024 13:09:32 +0800 Subject: [PATCH 3/4] modify test case --- .../senryx/contracts/abstract_state.rs | 13 +++++++ rap/src/analysis/senryx/contracts/checker.rs | 2 +- rap/src/analysis/senryx/matcher.rs | 6 ++-- .../slice_from_raw_parts/output.dot | 0 ...2024-10-09T12:41:40.429343069Z-2181137.txt | 34 ------------------- .../slice_from_raw_parts/src/main.rs | 4 ++- 6 files changed, 21 insertions(+), 38 deletions(-) delete mode 100644 test cases/senryx_tests/slice_from_raw_parts/output.dot delete mode 100644 test cases/senryx_tests/slice_from_raw_parts/rustc-ice-2024-10-09T12:41:40.429343069Z-2181137.txt diff --git a/rap/src/analysis/senryx/contracts/abstract_state.rs b/rap/src/analysis/senryx/contracts/abstract_state.rs index 4ab1eba..abf9ef1 100644 --- a/rap/src/analysis/senryx/contracts/abstract_state.rs +++ b/rap/src/analysis/senryx/contracts/abstract_state.rs @@ -48,6 +48,15 @@ pub struct AbstractStateItem { pub state: HashSet, } +impl AbstractStateItem { + pub fn new(value:(Value,Value), state: HashSet) -> Self { + Self { + value, + state, + } + } +} + pub struct AbstractState { pub state_map: HashMap, } @@ -58,4 +67,8 @@ impl AbstractState { state_map: HashMap::new(), } } + + pub fn insert_abstate(&mut self, place: usize, place_state_item: AbstractStateItem) { + self.state_map.insert(place, place_state_item); + } } \ No newline at end of file diff --git a/rap/src/analysis/senryx/contracts/checker.rs b/rap/src/analysis/senryx/contracts/checker.rs index f86fdaf..e535e68 100644 --- a/rap/src/analysis/senryx/contracts/checker.rs +++ b/rap/src/analysis/senryx/contracts/checker.rs @@ -28,7 +28,7 @@ impl SliceFromRawPartsChecker { Contract::StateCheck { op: Op::EQ, state: StateType::AllocatedState(AllocatedState::Alloc) }, ]); map.insert(1, vec![ - Contract::ValueCheck { op: Op::LE, value: Value::Isize((isize::MAX)/(mem::size_of::() as isize)) }, + Contract::ValueCheck { op: Op::LE, value: Value::Usize((isize::MAX as usize)/mem::size_of::()) }, ]); Self { variable_contracts: map, diff --git a/rap/src/analysis/senryx/matcher.rs b/rap/src/analysis/senryx/matcher.rs index ed6c22b..b4bf250 100644 --- a/rap/src/analysis/senryx/matcher.rs +++ b/rap/src/analysis/senryx/matcher.rs @@ -3,8 +3,10 @@ use rustc_middle::mir::Operand; use super::contracts::{abstract_state::AbstractState, checker::{Checker, SliceFromRawPartsChecker}, contract::check_contract}; pub fn match_unsafe_api_and_check_contracts(func_name: &str, args:&Vec, abstate:&AbstractState, _ty: T) { - let checker: Option> = match func_name { - "std::slice::from_raw_parts::<'_, u8>" => { + let base_func_name = func_name.split::<&str>("<").next().unwrap_or(func_name); + println!("base name ---- {:?}",base_func_name); + let checker: Option> = match base_func_name { + "std::slice::from_raw_parts::" => { Some(Box::new(SliceFromRawPartsChecker::::new())) } _ => None, diff --git a/test cases/senryx_tests/slice_from_raw_parts/output.dot b/test cases/senryx_tests/slice_from_raw_parts/output.dot deleted file mode 100644 index e69de29..0000000 diff --git a/test cases/senryx_tests/slice_from_raw_parts/rustc-ice-2024-10-09T12:41:40.429343069Z-2181137.txt b/test cases/senryx_tests/slice_from_raw_parts/rustc-ice-2024-10-09T12:41:40.429343069Z-2181137.txt deleted file mode 100644 index c2d41ac..0000000 --- a/test cases/senryx_tests/slice_from_raw_parts/rustc-ice-2024-10-09T12:41:40.429343069Z-2181137.txt +++ /dev/null @@ -1,34 +0,0 @@ -thread 'rustc' panicked at src/analysis/senryx/visitor.rs:34:61: -index out of bounds: the len is 0 but the index is 0 -stack backtrace: - 0: 0x78c38b304f7b - std::backtrace::Backtrace::create::hd127b7c6d6cd03e5 - 1: 0x78c38b304ee0 - std::backtrace::Backtrace::force_capture::h417127df1e2d51e0 - 2: 0x78c38bf6e3ea - as core[1d3bda36d657c2e8]::ops::function::Fn<(&dyn for<'a, 'b> core[1d3bda36d657c2e8]::ops::function::Fn<(&'a core[1d3bda36d657c2e8]::panic::panic_info::PanicInfo<'b>,), Output = ()> + core[1d3bda36d657c2e8]::marker::Sync + core[1d3bda36d657c2e8]::marker::Send, &core[1d3bda36d657c2e8]::panic::panic_info::PanicInfo)>>::call - 3: 0x78c38b316d19 - std::panicking::rust_panic_with_hook::ha10fdbfc5a8fd181 - 4: 0x78c38b32d191 - std::panicking::begin_panic_handler::{{closure}}::h1e0422a4a93f10ef - 5: 0x78c38b32cfa6 - std::sys_common::backtrace::__rust_end_short_backtrace::h37557d4428f73607 - 6: 0x78c38b316952 - rust_begin_unwind - 7: 0x78c38b2d5cf5 - core::panicking::panic_fmt::he860d7c2092d0804 - 8: 0x78c38b2d5f12 - core::panicking::panic_bounds_check::ha0bd35ae879439cb - 9: 0x63f3800826b8 - rap::analysis::senryx::visitor::BodyVisitor::path_forward_check::hd4a21b1274954e2f - 10: 0x63f3800629c5 - rap::analysis::senryx::SenryxCheck::pre_handle_type::h6ed222a4c1d2291c - 11: 0x63f380062661 - rap::analysis::senryx::SenryxCheck::start::h659e0d62aac16b66 - 12: 0x63f3800632b7 - rap::start_analyzer::ha0e73323cc9a5cc9 - 13: 0x63f380062c24 - ::after_analysis::hebe0f47b5c6b2bdd - 14: 0x78c38bf729de - ::enter::, rustc_span[44b2500b42daeb56]::ErrorGuaranteed>> - 15: 0x78c38bf6b48d - std[eb6e579615efab8d]::sys_common::backtrace::__rust_begin_short_backtrace::, rustc_driver_impl[5383af9c25314365]::run_compiler::{closure#1}>::{closure#0}, core[1d3bda36d657c2e8]::result::Result<(), rustc_span[44b2500b42daeb56]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[1d3bda36d657c2e8]::result::Result<(), rustc_span[44b2500b42daeb56]::ErrorGuaranteed>> - 16: 0x78c38bf8c2a4 - std[eb6e579615efab8d]::panicking::try::, core[1d3bda36d657c2e8]::panic::unwind_safe::AssertUnwindSafe<::spawn_unchecked_, rustc_driver_impl[5383af9c25314365]::run_compiler::{closure#1}>::{closure#0}, core[1d3bda36d657c2e8]::result::Result<(), rustc_span[44b2500b42daeb56]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[1d3bda36d657c2e8]::result::Result<(), rustc_span[44b2500b42daeb56]::ErrorGuaranteed>>::{closure#1}::{closure#0}>> - 17: 0x78c38bf6d2f3 - <::spawn_unchecked_, rustc_driver_impl[5383af9c25314365]::run_compiler::{closure#1}>::{closure#0}, core[1d3bda36d657c2e8]::result::Result<(), rustc_span[44b2500b42daeb56]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[1d3bda36d657c2e8]::result::Result<(), rustc_span[44b2500b42daeb56]::ErrorGuaranteed>>::{closure#1} as core[1d3bda36d657c2e8]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} - 18: 0x78c38b2f10b2 - std::sys::unix::thread::Thread::new::thread_start::h384c95156cb20553 - 19: 0x78c389e94ac3 - start_thread - at ./nptl/pthread_create.c:442:8 - 20: 0x78c389f26850 - __GI___clone3 - at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81 - 21: 0x0 - - - -rustc version: 1.75.0-dev -platform: x86_64-unknown-linux-gnu - -query stack during panic: -end of query stack diff --git a/test cases/senryx_tests/slice_from_raw_parts/src/main.rs b/test cases/senryx_tests/slice_from_raw_parts/src/main.rs index 1e20f13..b7b3c39 100644 --- a/test cases/senryx_tests/slice_from_raw_parts/src/main.rs +++ b/test cases/senryx_tests/slice_from_raw_parts/src/main.rs @@ -3,7 +3,9 @@ use std::slice; fn test1() { let data: *const u8 = Box::leak(Box::new(0)); let len: usize = (isize::MAX as usize) / std::mem::size_of::() + 1; - // 'len' is out of the max value and causes a 'bounded' UB + // Pass(Allocated \ Aligned): data is allocated and aligned + // Fail(Bounded): 'len' is out of the max value + // Fail(Dereferencable \ Initialized): 'data' onnly points to the memory with a 'u8' size, but the 'len' is out of this range let slice: &[u8] = unsafe { slice::from_raw_parts(data, len) }; if let Some(last_element) = slice.last() { println!("Last element: {}", last_element); From 1b92416d54f6b013fdb6373741d3ffe36a3692c7 Mon Sep 17 00:00:00 2001 From: LemonJ <1632798336@qq.com> Date: Fri, 11 Oct 2024 18:33:03 +0800 Subject: [PATCH 4/4] add path process logic in senryx --- rap/src/analysis/safedrop/graph.rs | 22 +++++++ rap/src/analysis/senryx.rs | 9 +-- .../senryx/contracts/abstract_state.rs | 44 ++++++++++++- .../senryx/contracts/state_lattice.rs | 48 ++++++++++++-- rap/src/analysis/senryx/matcher.rs | 2 +- rap/src/analysis/senryx/visitor.rs | 66 +++++++++++++------ 6 files changed, 157 insertions(+), 34 deletions(-) diff --git a/rap/src/analysis/safedrop/graph.rs b/rap/src/analysis/safedrop/graph.rs index 50b4a7e..470ae8f 100644 --- a/rap/src/analysis/safedrop/graph.rs +++ b/rap/src/analysis/safedrop/graph.rs @@ -462,4 +462,26 @@ impl<'tcx> SafeDropGraph<'tcx> { let mut time = 0; self.tarjan(0, &mut stack, &mut instack, &mut dfn, &mut low, &mut time); } + + pub fn dfs_on_spanning_tree(&self, index: usize, stack: &mut Vec, paths: &mut Vec>) { + let curr_scc_index = self.scc_indices[index]; + if self.blocks[curr_scc_index].next.len() == 0 { + paths.push(stack.to_vec()); + } else { + for child in self.blocks[curr_scc_index].next.iter() { + stack.push(*child); + self.dfs_on_spanning_tree(*child, stack, paths); + } + } + stack.pop(); + } + + pub fn get_paths(&self) -> Vec> { + // rap_debug!("dfs here"); + let mut paths: Vec> = Vec::new(); + let mut stack: Vec = vec![0]; + self.dfs_on_spanning_tree(0, &mut stack, &mut paths); + + return paths; + } } diff --git a/rap/src/analysis/senryx.rs b/rap/src/analysis/senryx.rs index 8d9c9f7..c548db5 100644 --- a/rap/src/analysis/senryx.rs +++ b/rap/src/analysis/senryx.rs @@ -48,20 +48,21 @@ impl<'tcx> SenryxCheck<'tcx>{ pub fn pre_handle_type(&self, def_id: DefId) { let mut uig_checker = UnsafetyIsolationCheck::new(self.tcx); let func_type = uig_checker.get_type(def_id); - let mut body_visitor = BodyVisitor::new(self.tcx); + let mut body_visitor = BodyVisitor::new(self.tcx, def_id); if func_type == 1 { let func_cons = uig_checker.search_constructor(def_id); for func_con in func_cons { - body_visitor.path_forward_check(func_con); + let mut cons_body_visitor = BodyVisitor::new(self.tcx, func_con); + cons_body_visitor.path_forward_check(); // TODO: cache fields' states // TODO: update method body's states // analyze body's states - body_visitor.path_forward_check(def_id); + body_visitor.path_forward_check(); } } else { - body_visitor.path_forward_check(def_id); + body_visitor.path_forward_check(); } } diff --git a/rap/src/analysis/senryx/contracts/abstract_state.rs b/rap/src/analysis/senryx/contracts/abstract_state.rs index abf9ef1..a368fb5 100644 --- a/rap/src/analysis/senryx/contracts/abstract_state.rs +++ b/rap/src/analysis/senryx/contracts/abstract_state.rs @@ -1,5 +1,7 @@ use std::{collections::{HashMap, HashSet}, hash::Hash}; +use super::state_lattice::Lattice; + #[derive(Debug, PartialEq, PartialOrd, Copy, Clone)] pub enum Value { Usize(usize), @@ -39,10 +41,17 @@ pub enum AllocatedState { #[derive(Debug, PartialEq, Eq, Hash, Copy, Clone)] pub enum AlignState { Aligned, - Unaligned, + Small2BigCast, + Big2SmallCast, } -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Eq, Hash, Copy, Clone)] +pub enum InitState { + FullyInitialized, + PartlyInitialized, +} + +#[derive(Debug, PartialEq, Clone)] pub struct AbstractStateItem { pub value: (Value,Value), pub state: HashSet, @@ -55,6 +64,37 @@ impl AbstractStateItem { state, } } + + pub fn meet_state_item(&mut self, other_state:&AbstractStateItem) { + let mut new_state = HashSet::new(); + + // visit 'self.state' and 'other_state.state',matching states and calling meet method + for state_self in &self.state { + // if find the same state type in 'other_state', then meet it; + if let Some(matching_state) = other_state + .state + .iter() + .find(|state_other| std::mem::discriminant(*state_other) == std::mem::discriminant(state_self)) + { + let merged_state = match (state_self, matching_state) { + (StateType::AllocatedState(s1), StateType::AllocatedState(s2)) => { + StateType::AllocatedState(s1.meet(*s2)) + } + (StateType::AlignState(s1), StateType::AlignState(s2)) => { + StateType::AlignState(s1.meet(*s2)) + } + _ => continue, + }; + new_state.insert(merged_state); + } else { + // if 'other_state' does not have the same state,then reserve the current state + new_state.insert(*state_self); + } + } + + // 更新 self 的状态 + self.state = new_state; + } } pub struct AbstractState { diff --git a/rap/src/analysis/senryx/contracts/state_lattice.rs b/rap/src/analysis/senryx/contracts/state_lattice.rs index a8e3c4f..4559b97 100644 --- a/rap/src/analysis/senryx/contracts/state_lattice.rs +++ b/rap/src/analysis/senryx/contracts/state_lattice.rs @@ -114,22 +114,58 @@ impl Lattice for AllocatedState { impl Lattice for AlignState { fn join(&self, other: Self) -> Self { match (self, other) { - (AlignState::Aligned, AlignState::Unaligned) | (AlignState::Unaligned, AlignState::Aligned) => AlignState::Unaligned, - (AlignState::Aligned, AlignState::Aligned) => AlignState::Aligned, - (AlignState::Unaligned, AlignState::Unaligned) => AlignState::Unaligned, + (AlignState::Aligned, _) => AlignState::Aligned, + (AlignState::Big2SmallCast, AlignState::Big2SmallCast) => AlignState::Big2SmallCast, + (AlignState::Big2SmallCast, AlignState::Small2BigCast) => AlignState::Big2SmallCast, + (AlignState::Big2SmallCast, AlignState::Aligned) => AlignState::Aligned, + (AlignState::Small2BigCast, _) => other, } } fn meet(&self, other: Self) -> Self { match (self, other) { - (AlignState::Aligned, _) | (_, AlignState::Aligned) => AlignState::Aligned, - (AlignState::Unaligned, AlignState::Unaligned) => AlignState::Unaligned, + (AlignState::Aligned, _) => other, + (AlignState::Big2SmallCast, AlignState::Big2SmallCast) => AlignState::Big2SmallCast, + (AlignState::Big2SmallCast, AlignState::Small2BigCast) => AlignState::Small2BigCast, + (AlignState::Big2SmallCast, AlignState::Aligned) => AlignState::Big2SmallCast, + (AlignState::Small2BigCast, _) => AlignState::Small2BigCast, } } fn less_than(&self, other: Self) -> bool { match (self, other) { - (AlignState::Aligned, AlignState::Unaligned) => true, + (_, AlignState::Aligned) => true, + (AlignState::Small2BigCast, AlignState::Big2SmallCast) => true, + _ => false, + } + } + + fn equal(&self, other: Self) -> bool { + *self == other + } +} + +impl Lattice for InitState { + fn join(&self, other: Self) -> Self { + match (self, other) { + (InitState::FullyInitialized, _) => InitState::FullyInitialized, + (_, InitState::FullyInitialized) => InitState::FullyInitialized, + _ => InitState::PartlyInitialized, + } + } + + fn meet(&self, other: Self) -> Self { + match (self, other) { + (InitState::FullyInitialized, _) => other, + (_, InitState::FullyInitialized) => *self, + _ => InitState::PartlyInitialized, + } + } + + fn less_than(&self, other: Self) -> bool { + match (self, other) { + (InitState::FullyInitialized, InitState::FullyInitialized) => true, + (InitState::PartlyInitialized, _) => true, _ => false, } } diff --git a/rap/src/analysis/senryx/matcher.rs b/rap/src/analysis/senryx/matcher.rs index b4bf250..dfe96a0 100644 --- a/rap/src/analysis/senryx/matcher.rs +++ b/rap/src/analysis/senryx/matcher.rs @@ -4,7 +4,7 @@ use super::contracts::{abstract_state::AbstractState, checker::{Checker, SliceFr pub fn match_unsafe_api_and_check_contracts(func_name: &str, args:&Vec, abstate:&AbstractState, _ty: T) { let base_func_name = func_name.split::<&str>("<").next().unwrap_or(func_name); - println!("base name ---- {:?}",base_func_name); + // println!("base name ---- {:?}",base_func_name); let checker: Option> = match base_func_name { "std::slice::from_raw_parts::" => { Some(Box::new(SliceFromRawPartsChecker::::new())) diff --git a/rap/src/analysis/senryx/visitor.rs b/rap/src/analysis/senryx/visitor.rs index 706fb83..7b5ea9e 100644 --- a/rap/src/analysis/senryx/visitor.rs +++ b/rap/src/analysis/senryx/visitor.rs @@ -1,3 +1,7 @@ +use std::collections::HashMap; + +use crate::analysis::safedrop::graph::SafeDropGraph; + use super::contracts::abstract_state::AbstractState; use super::matcher::match_unsafe_api_and_check_contracts; use rustc_middle::ty::TyCtxt; @@ -10,36 +14,42 @@ use rustc_hir::def_id::DefId; pub struct BodyVisitor<'tcx> { pub tcx: TyCtxt<'tcx>, - pub abstract_states: AbstractState, - pub scc_sub_blocks: Vec>, + pub def_id: DefId, + pub safedrop_graph: SafeDropGraph<'tcx>, + pub abstract_states: HashMap, } impl<'tcx> BodyVisitor<'tcx> { - pub fn new(tcx: TyCtxt<'tcx>) -> Self{ + pub fn new(tcx: TyCtxt<'tcx>, def_id: DefId) -> Self{ + let body = tcx.optimized_mir(def_id); Self{ tcx, - abstract_states: AbstractState::new(), - scc_sub_blocks: Vec::new(), + def_id, + safedrop_graph: SafeDropGraph::new(body, tcx, def_id), + abstract_states: HashMap::new(), } } - pub fn path_forward_check(&mut self, def_id: DefId) { - let paths = self.get_all_paths(def_id); - let body = self.tcx.optimized_mir(def_id); + pub fn path_forward_check(&mut self) { + let paths = self.get_all_paths(); + let body = self.tcx.optimized_mir(self.def_id); for (index, path_info) in paths.iter().enumerate() { + self.abstract_states.insert(index, AbstractState::new()); for block_index in path_info.iter() { if block_index >= &body.basic_blocks.len(){ continue; } self.path_analyze_block(&body.basic_blocks[BasicBlock::from_usize(*block_index)].clone(), index, *block_index); - // let tem_scc_sub_blocks = self.scc_sub_blocks[*block_index].clone(); - // if tem_scc_sub_blocks.len() > 0{ - // for sub_block in &tem_scc_sub_blocks { - // self.path_analyze_block(&body.basic_blocks[BasicBlock::from_usize(*sub_block)].clone(), index, *block_index); - // } - // } + let tem_scc_sub_blocks = self.safedrop_graph.blocks[*block_index].scc_sub_blocks.clone(); + // println!("father block {:?} scc sub blocks {:?}", block_index, tem_scc_sub_blocks); + if tem_scc_sub_blocks.len() > 0{ + for sub_block in &tem_scc_sub_blocks { + self.path_analyze_block(&body.basic_blocks[BasicBlock::from_usize(*sub_block)].clone(), index, *block_index); + } + } } } + self.abstract_states_mop(); } pub fn path_analyze_block(&mut self, block:&BasicBlockData<'tcx>, path_index:usize, bb_index: usize,) { @@ -49,7 +59,7 @@ impl<'tcx> BodyVisitor<'tcx> { self.path_analyze_terminator(&block.terminator(), path_index, bb_index); } - pub fn path_analyze_terminator(&mut self, terminator:&Terminator<'tcx>, _path_index:usize, _bb_index: usize) { + pub fn path_analyze_terminator(&mut self, terminator:&Terminator<'tcx>, path_index:usize, _bb_index: usize) { match &terminator.kind { TerminatorKind::Call{func, args, destination: _, target: _, ..} => { let func_name = format!("{:?}",func); @@ -58,7 +68,7 @@ impl<'tcx> BodyVisitor<'tcx> { for generic_arg in raw_list.iter() { match generic_arg.unpack() { GenericArgKind::Type(ty) => { - match_unsafe_api_and_check_contracts(func_name.as_str(), args, &self.abstract_states, ty); + match_unsafe_api_and_check_contracts(func_name.as_str(), args, &self.abstract_states.get(&path_index).unwrap(), ty); } _ => {} } @@ -179,14 +189,28 @@ impl<'tcx> BodyVisitor<'tcx> { return current_local; } - pub fn get_all_paths(&self, def_id: DefId) -> Vec> { - // let results = Vec::new(); - let results = vec![vec![0,1,2,3,4,5,6,7,8]]; - let _body = self.tcx.optimized_mir(def_id); - // TODO: get all paths in a body + pub fn get_all_paths(&mut self) -> Vec> { + self.safedrop_graph.solve_scc(); + let results = self.safedrop_graph.get_paths(); results } + pub fn abstract_states_mop(&mut self) { + let mut result_state = AbstractState { + state_map: HashMap::new(), + }; + + for (_path_idx, abstract_state) in &self.abstract_states { + for (var_index, state_item) in &abstract_state.state_map { + if let Some(existing_state_item) = result_state.state_map.get_mut(&var_index) { + existing_state_item.meet_state_item(state_item); + } else { + result_state.state_map.insert(*var_index, state_item.clone()); + } + } + } + } + pub fn get_all_callees(&self, def_id: DefId) -> Vec { let mut results = Vec::new(); let body = self.tcx.optimized_mir(def_id);