Skip to content

Latest commit

 

History

History
75 lines (66 loc) · 4.23 KB

microprofile.md

File metadata and controls

75 lines (66 loc) · 4.23 KB
category crev description
Unsound
dangerous
Bindings for a C++ flamegraph profiler

microprofile

Pros:

  • Probably works?
  • XB1 and PS4 port allusions

Cons:

  • 98% networked exposed C++
    • that also string parses
    • and disassembles
    • and rewrites x86 code on the fly
    • I don't see fuzz tests upstream either
  • If this isn't unsound somewhere, I'll eat my hat.
    • Exceeding the max scope depth appears unsound.
    • Exceeding the ~1024 max timer count asserts then overflows.
  • Don't use in production, only development, IMO

Audit

version thoroughness understanding rating Notes
0.2.1 low low negative Much skimming

0.2.1

file rating notes
src/microprofile/distorm/include/distorm.h Skimmed, BSD
src/microprofile/distorm/include/mnemonics.h Skimmed
src/microprofile/distorm/src/config.h Skimmed
src/microprofile/distorm/src/decoder.c Skimmed
src/microprofile/distorm/src/decoder.h Skimmed
src/microprofile/distorm/src/distorm.c Skimmed
src/microprofile/distorm/src/instructions.c Skimmed
src/microprofile/distorm/src/instructions.h Skimmed
src/microprofile/distorm/src/insts.c Skimmed, magic constants table
src/microprofile/distorm/src/insts.h Skimmed
src/microprofile/distorm/src/mnemonics.c Skimmed, magic constants table
src/microprofile/distorm/src/operands.c Skimmed
src/microprofile/distorm/src/operands.h Skimmed
src/microprofile/distorm/src/prefix.c Skimmed
src/microprofile/distorm/src/prefix.h Skimmed
src/microprofile/distorm/src/textdefs.c Skimmed
src/microprofile/distorm/src/textdefs.h Skimmed
src/microprofile/distorm/src/wstring.c Skimmed
src/microprofile/distorm/src/wstring.h Skimmed
src/microprofile/distorm/src/x86defs.h Skimmed
src/microprofile/distorm/COPYING Upstream file missing, legally required for redistribution
src/microprofile/microprofile_html.h Skimmed... 15 KLOC of C++ HTML/JS strings, oof
src/microprofile/microprofile.cpp Skimmed... 13 KLOC of network exposed, string parsing, instruction rewriting C++11.
src/microprofile/microprofile.h Skimmed
src/microprofile/patch_osx.s Skimmed
src/microprofile/patch_win32.asm Skimmed
src/build.rs ✔️ cc
src/lib.rs No docs, haven't verified C ABI, uses static mut, but not obviously unsound.
.cargo_fcs_info.json ✔️
.cargo-ok ✔️
Cargo.toml Says MIT, includes BSD code.
Cargo.toml.orig Says MIT, includes BSD code.
Other Rating Notes
unsafe 98% C/C++ code - including string parsing, network stuff
fs Yes
io C/C++ networking and string parsing code
docs distorm is well documented, microprofile (both the C++ and Rust) aren't so much
tests Not a fuzz test in sight