WebAssembly / WebAssembly/binaryen

Slow to disassemble some crafted wasm files

Offen
#1,663 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
WebAssembly
Sterne
8.6k
Forks
885
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
69

Beschreibung

wasm-dis may sometimes spend too much time to disassemble certain crafted wasm files.
wasm-dis-slow.zip

It turns out that inside WasmBinaryBuilder::readFunctions(), at https://github.com/WebAssembly/binaryen/blob/master/src/wasm/wasm-binary.cpp#L1073-L1080, the value num may get extremely large (I haven't figured out why yet), and subsequent operations require too much time to finish.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit der bereitgestellten Datei wasm-dis-slow.zip und untersuche WasmBinaryBuilder::readFunctions() in src/wasm/wasm-binary.cpp ungefähr in den Zeilen 1073–1080. Konzentriere dich darauf, wie der Wert num ermittelt und verwendet wird. Reproduziere die langsame Disassemblierung und ermittle, warum num extrem groß wird. Die Aufgabe ist erledigt, wenn die präparierte Datei nicht mehr dazu führt, dass wasm-dis übermäßig viel Zeit benötigt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp, wasm
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.