Attackathon _ Fuel Network 32703 - [Smart Contract - Low] Unexpected variable shadowing during ir ge
Description
Brief/Intro
Vulnerability Details
fn store_key_in_local_mem(
compiler: &mut FnCompiler,
context: &mut Context,
value: Value,
span_md_idx: Option<MetadataIndex>,
) -> Result<Value, CompileError> {
// New name for the key
let key_name = compiler.lexical_map.insert("key_for_storage".to_owned());
// Local variable for the key
let key_var = compiler
.function
.new_local_var(context, key_name, Type::get_b256(context), None, false)
.map_err(|ir_error| {
CompileError::InternalOwned(ir_error.to_string(), Span::dummy())
})?;
// Convert the key variable to a value using get_local.
let key_val = compiler
.current_block
.append(context)
.get_local(key_var)
.add_metadatum(context, span_md_idx);
// Store the value to the key pointer value
compiler
.current_block
.append(context)
.store(key_val, value)
.add_metadatum(context, span_md_idx);
Ok(key_val)
}Impact Details
References
Proof of concept
Proof of Concept
PreviousAttackathon _ Fuel Network 32700 - [Smart Contract - High] double increasing underlying value in ceiNextAttackathon _ Fuel Network 32706 - [Smart Contract - High] the function subtract in signed libs like
Last updated
Was this helpful?