MCPcopy Create free account
hub / github.com/FuzzAnything/PromptFuzz / is_ret_by_call

Function is_ret_by_call

src/program/transform.rs:1579–1610  ·  view source on GitHub ↗

Is this arg returned by calls

(func: &str, arg_pos: usize, visitor: &Visitor)

Source from the content-addressed store, hash-verified

1577
1578 // Is this arg returned by calls
1579 pub fn is_ret_by_call(func: &str, arg_pos: usize, visitor: &Visitor) -> bool {
1580 if let Some(call) = visitor.find_callexpr(func, 0) {
1581 if let Clang::CallExpr(ce) = &call.kind {
1582 let call_args = ce.get_childs(call);
1583 if arg_pos >= call_args.len() {
1584 return false;
1585 }
1586 let arg = ce.get_childs(call)[arg_pos];
1587 if crate::ast::utils::is_integer_literal(arg) {
1588 return false;
1589 }
1590 if matches!(
1591 &arg.kind,
1592 Clang::CallExpr(_) | Clang::CXXNewExpr(_) | Clang::CXXMemberCallExpr
1593 ) {
1594 return true;
1595 }
1596
1597 if let Clang::DeclRefExpr(dre) = &arg.kind {
1598 if let Some(init) = dre.get_var_init(visitor) {
1599 if matches!(
1600 &init.kind,
1601 Clang::CallExpr(_) | Clang::CXXNewExpr(_) | Clang::CXXMemberCallExpr
1602 ) {
1603 return true;
1604 }
1605 }
1606 }
1607 }
1608 }
1609 false
1610 }
1611}
1612
1613pub fn transform(

Callers 1

Calls 4

is_integer_literalFunction · 0.85
find_callexprMethod · 0.80
get_var_initMethod · 0.80
get_childsMethod · 0.45

Tested by

no test coverage detected