mirror of
https://github.com/elicpeter/nyx.git
synced 2026-06-21 20:18:06 +02:00
refactor(dynamic): add recursive dependency resolution for C receivers, enhance harness generation logic, and expand test coverage
This commit is contained in:
parent
6e9cc0b607
commit
680fc6bd28
4 changed files with 286 additions and 3 deletions
|
|
@ -241,6 +241,31 @@ fn class_method_c_collapses_to_class_underscore_method_symbol() {
|
|||
assert!(h.source.contains("UserService_run"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn class_method_c_builds_recursive_receiver_pointer() {
|
||||
let mut spec = make_spec(Lang::C);
|
||||
spec.entry_file = "tests/dynamic_fixtures/class_method/c_recursive_deps/vuln.c".into();
|
||||
spec.sink_file = spec.entry_file.clone();
|
||||
let h = lang::emit(&spec).expect("emit ok");
|
||||
assert!(h.source.contains("ShellRunner nyx_shell_0 = {0};"));
|
||||
assert!(
|
||||
h.source
|
||||
.contains("CommandRunner nyx_runner_0 = { .shell = &nyx_shell_0 };")
|
||||
);
|
||||
assert!(
|
||||
h.source
|
||||
.contains("UserService nyx_receiver = { .runner = &nyx_runner_0 };")
|
||||
);
|
||||
assert!(
|
||||
h.source
|
||||
.contains("UserService_run(&nyx_receiver, payload, strlen(payload));")
|
||||
);
|
||||
assert!(
|
||||
!h.source
|
||||
.contains("UserService_run(payload, strlen(payload));")
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn class_method_cpp_constructs_default_then_calls_method() {
|
||||
let spec = make_spec(Lang::Cpp);
|
||||
|
|
@ -477,6 +502,17 @@ mod e2e_phase_19 {
|
|||
cap: Cap::CODE_EXEC,
|
||||
bins: &["cc"],
|
||||
},
|
||||
Case {
|
||||
lang: Lang::C,
|
||||
fixture_dir: "c_recursive_deps",
|
||||
vuln_file: "vuln.c",
|
||||
benign_file: "benign.c",
|
||||
vuln_class: "UserService",
|
||||
benign_class: "UserService",
|
||||
method: "run",
|
||||
cap: Cap::CODE_EXEC,
|
||||
bins: &["cc"],
|
||||
},
|
||||
Case {
|
||||
lang: Lang::Cpp,
|
||||
fixture_dir: "cpp",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue