Skip to main content

names_ls/
names_ls.rs

1use idalib::idb::IDB;
2
3fn main() -> anyhow::Result<()> {
4    println!("Trying to open IDA database...");
5
6    // Open IDA database
7    let idb = IDB::open("./tests/ls")?;
8
9    println!("Testing len(), get_by_index(), and get_address_by_index() (valid indexes)");
10    // len()
11    for i in 0..idb.names().len() {
12        // get_by_index()
13        assert!(idb.names().get_by_index(i).is_some());
14        // get_address_by_index()
15        assert!(idb.names().get_address_by_index(i).is_some());
16    }
17
18    println!("Testing len(), get_by_index(), and get_address_by_index() (invalid index)");
19    // len()
20    let len = idb.names().len();
21    // get_by_index()
22    assert!(idb.names().get_by_index(len).is_none());
23    // get_address_by_index()
24    assert!(idb.names().get_address_by_index(len).is_none());
25
26    println!("\nTesting iterator:");
27    for name in idb.names().iter() {
28        let flags = idb.flags_at(name.address());
29        println!(
30            "\t{:#x}\t{:?}\tcode: {}\tdata: {}",
31            name.address(),
32            name.name(),
33            flags.is_code(),
34            flags.is_data(),
35        );
36    }
37
38    Ok(())
39}