WebAssembly / WebAssembly/binaryen

Slow to disassemble some crafted wasm files

Abierto
#1,663 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
WebAssembly
Estrellas
8.6k
Forks
885
Merge medio
1 d 19 h
PR fusionados (30 d)
69

Descripción

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.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con el archivo proporcionado wasm-dis-slow.zip e inspecciona WasmBinaryBuilder::readFunctions() en src/wasm/wasm-binary.cpp alrededor de las líneas 1073–1080, centrándote en cómo se obtiene y se utiliza el valor num. Reproduce la desensamblación lenta y determina por qué num se vuelve extremadamente grande. Se considera terminado cuando el archivo creado ya no hace que wasm-dis tarde un tiempo excesivo.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
cpp, wasm
Área
compilers
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.