diff --git a/slither/utils/upgradeability.py b/slither/utils/upgradeability.py index 1c4da1b5f..d52bb6514 100644 --- a/slither/utils/upgradeability.py +++ b/slither/utils/upgradeability.py @@ -51,7 +51,7 @@ def compare(v1: Contract, v2: Contract) -> dict: } # Since this is not a detector, include any missing variables in the v2 contract - if len(order_vars2) <= len(order_vars1): + if len(order_vars2) < len(order_vars1): for variable in order_vars1: if variable.name not in [v.name for v in order_vars2]: results["missing-vars-in-v2"].append(variable) @@ -99,11 +99,11 @@ def compare(v1: Contract, v2: Contract) -> dict: if len(modified_calls) > 0 or len(tainted_vars) > 0: results["tainted-functions"].append(function) - # Find all new or tainted variables, i.e., variables that are read or written by a new/modified function - for idx, var in enumerate(order_vars2): + # Find all new or tainted variables, i.e., variables that are read or written by a new/modified/tainted function + for _, var in enumerate(order_vars2): read_by = v2.get_functions_reading_from_variable(var) written_by = v2.get_functions_writing_to_variable(var) - if len(order_vars1) <= idx: + if v1.get_state_variable_from_name(var.name) is None: results["new-variables"].append(var) elif any(func in read_by or func in written_by for func in new_modified_functions): results["tainted-variables"].append(var)