WebAssembly / WebAssembly/binaryen
Slow to disassemble some crafted wasm files
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
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Ö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