Skip to content

Commit 84f2a62

Browse files
authored
Merge pull request diffblue#430 from diffblue/bugfix_taint_no_fresh_EVS_for_DO_query
Bugfix in taint analysis: Do not create fresh EVS when the query is DO.
2 parents afa2e18 + 57dbfdd commit 84f2a62

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

src/taint-analysis/taint_summary.cpp

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -431,17 +431,22 @@ bool taint_algorithm_computing_summary_of_functiont::
431431
singular);
432432
if(generate_fresh_evs && raw_result.empty())
433433
{
434-
external_value_set_exprt new_lhs(
435-
query_expr.type(),
436-
constant_exprt("", string_typet()),
437-
external_value_set_typet::ROOT_OBJECT,
438-
false);
439-
// Use access path "[]" to dereference the pointer
440-
access_path_entry_exprt new_entry("[]", "", "", typet());
441-
new_lhs.set_per_field_access_path(new_entry);
442-
const auto new_number =
443-
numbering->number(static_cast<const exprt &>(new_lhs));
444-
result.insert(new_number);
434+
if(query_expr.id() == ID_dynamic_object)
435+
result.insert(numbering->number(query_expr));
436+
else
437+
{
438+
external_value_set_exprt new_lhs(
439+
query_expr.type(),
440+
constant_exprt("", string_typet()),
441+
external_value_set_typet::ROOT_OBJECT,
442+
false);
443+
// Use access path "[]" to dereference the pointer
444+
access_path_entry_exprt new_entry("[]", "", "", typet());
445+
new_lhs.set_per_field_access_path(new_entry);
446+
const auto new_number =
447+
numbering->number(static_cast<const exprt &>(new_lhs));
448+
result.insert(new_number);
449+
}
445450
return false;
446451
}
447452
for(const auto raw_number : raw_result)

0 commit comments

Comments
 (0)