mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-08 17:09:41 +00:00
UserspaceEmulator: Cache the location and size of "malloc" and "free"
This allows us to quickly skip some auditing checks while we're inside malloc/free themselves.
This commit is contained in:
parent
862ab82c19
commit
67cdbe1925
|
@ -125,6 +125,14 @@ bool Emulator::load_elf()
|
||||||
});
|
});
|
||||||
|
|
||||||
m_cpu.set_eip(m_elf->image().entry().get());
|
m_cpu.set_eip(m_elf->image().entry().get());
|
||||||
|
|
||||||
|
auto malloc_symbol = m_elf->find_demangled_function("malloc");
|
||||||
|
auto free_symbol = m_elf->find_demangled_function("free");
|
||||||
|
|
||||||
|
m_malloc_symbol_start = malloc_symbol.value().value();
|
||||||
|
m_malloc_symbol_end = m_malloc_symbol_start + malloc_symbol.value().size();
|
||||||
|
m_free_symbol_start = free_symbol.value().value();
|
||||||
|
m_free_symbol_end = m_free_symbol_start + free_symbol.value().size();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,8 +178,7 @@ int Emulator::exec()
|
||||||
|
|
||||||
bool Emulator::is_in_malloc_or_free() const
|
bool Emulator::is_in_malloc_or_free() const
|
||||||
{
|
{
|
||||||
auto symbol = m_elf->symbolicate(m_cpu.eip());
|
return (m_cpu.eip() >= m_malloc_symbol_start && m_cpu.eip() < m_malloc_symbol_end) || (m_cpu.eip() >= m_free_symbol_start && m_cpu.eip() < m_free_symbol_end);
|
||||||
return symbol.starts_with("malloc") || symbol.starts_with("free");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static pid_t s_pid = getpid();
|
static pid_t s_pid = getpid();
|
||||||
|
|
|
@ -117,6 +117,11 @@ private:
|
||||||
|
|
||||||
bool m_shutdown { false };
|
bool m_shutdown { false };
|
||||||
int m_exit_status { 0 };
|
int m_exit_status { 0 };
|
||||||
|
|
||||||
|
FlatPtr m_malloc_symbol_start { 0 };
|
||||||
|
FlatPtr m_malloc_symbol_end { 0 };
|
||||||
|
FlatPtr m_free_symbol_start { 0 };
|
||||||
|
FlatPtr m_free_symbol_end { 0 };
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue