firefox: guardián que exige RLBox EN EL BINARIO, no en el configure
Tercera repetición de la misma lección en esta receta, y por eso nace junto con la bandera y no después: `--with-wasi-sysroot` es exactamente la clase de opción que el configure acepta sin chistar y que puede no llegar al artefacto. Ya pasó dos veces acá (MOZ_REQUIRE_SIGNING y MOZ_BUILD_DATE) y las dos veces el síntoma apareció lejísimos, sin nombrar la bandera. Acá el fallo sería el más caro de los tres: un firefox que dice tener enjaulados los parsers de fuentes y medios —graphite, ogg, expat, woff2, o sea el código que come entrada NO confiable de la red— y no los tiene. Una promesa falsa de seguridad es peor que no ofrecerla (§4 del SDD 26, mismo criterio que el modelo de adversario de qullqa). El discriminante está MEDIDO, no supuesto: sobre el artefacto b3:352d7880 —el último con RLBox apagado, 224 MB de libxul.so— los tres patrones (w2c_, rlbox, wasm2c) dan CERO. Así que cualquiera apareciendo prueba que la jaula entró. Se aceptan los tres y no sólo `w2c_` a propósito: el prefijo exacto es un detalle de la versión de wasm2c, y un guardián que falla por un cambio de convención de nombres tira 4 h de build por algo que no está roto. Lo que no puede pasar desapercibido es que los tres sigan en cero. El método de comprobar el artefacto y no la doc lo aportó la sesión hammer-f8. Re-hashea: b3:dba8fbf9 -> b3:98d6899a. Entra en el build que arranca ahora, que es justamente para lo que se agrega antes y no después.
This commit is contained in:
@@ -334,6 +334,35 @@ if [ "$real" != "$esperado" ]; then
|
||||
exit 1
|
||||
fi
|
||||
echo "guardián: BuildID = $real (determinista, de SOURCE_DATE_EPOCH)"
|
||||
|
||||
# ── GUARDIÁN: QUE RLBOX ESTÉ EN EL BINARIO, NO SÓLO EN EL CONFIGURE ───────────────────────────
|
||||
# Tercera repetición de la misma lección, y por eso nace junto con la bandera en vez de después:
|
||||
# `--with-wasi-sysroot` es exactamente la clase de opción que el configure acepta sin chistar y
|
||||
# que puede no llegar al artefacto. Ya pasó dos veces en ESTA receta (`MOZ_REQUIRE_SIGNING` y
|
||||
# `MOZ_BUILD_DATE`), y acá el fallo sería el más caro de todos: un firefox que dice tener
|
||||
# enjaulados los parsers de fuentes y medios —el código que come entrada NO confiable de la red—
|
||||
# y no los tiene. Una promesa falsa de seguridad es peor que no ofrecerla.
|
||||
#
|
||||
# QUÉ SE MIRA. RLBox compila esas librerías a wasm y las traduce a C con wasm2c, que deja su
|
||||
# rastro en los símbolos de `libxul.so`. El discriminante está MEDIDO, no supuesto: sobre el
|
||||
# artefacto `b3:352d7880` (el último con RLBox APAGADO, 224 MB de libxul) los tres patrones dan
|
||||
# CERO, así que cualquiera de ellos apareciendo significa que la jaula entró de verdad.
|
||||
# Se aceptan los tres y no sólo `w2c_` a propósito: el prefijo exacto es un detalle de la versión
|
||||
# de wasm2c, y un guardián que falla por un cambio de convención de nombres tira 4 h de build por
|
||||
# algo que no está roto. Lo que NO puede pasar desapercibido es que los tres sigan en cero.
|
||||
X=/out/usr/lib/firefox/libxul.so
|
||||
test -f "$X" || { echo "!! no hay libxul.so en el artefacto" >&2; exit 1; }
|
||||
n_w2c=$(llvm-nm --defined-only "$X" 2>/dev/null | grep -c " w2c_" || true)
|
||||
n_rlb=$(llvm-nm "$X" 2>/dev/null | grep -ci rlbox || true)
|
||||
n_w2n=$(llvm-nm "$X" 2>/dev/null | grep -ci wasm2c || true)
|
||||
if [ $((n_w2c + n_rlb + n_w2n)) -eq 0 ]; then
|
||||
echo "!! RLBOX NO LLEGÓ AL BINARIO: libxul.so no tiene NI UN símbolo w2c_/rlbox/wasm2c." >&2
|
||||
echo " El configure aceptó --with-wasi-sysroot pero el sandbox wasm no se construyó." >&2
|
||||
echo " Mirá si las deps wasi-libc / wasi-compiler-rt / wasi-sdk llegaron al sandbox y si" >&2
|
||||
echo " /usr/share/wasi-sysroot/lib/wasm32-wasip1/libc.a existe durante el build." >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "guardián: RLBox en el binario (w2c_=$n_w2c rlbox=$n_rlb wasm2c=$n_w2n; con RLBox apagado los tres son 0)"
|
||||
'''
|
||||
|
||||
[deps]
|
||||
|
||||
Reference in New Issue
Block a user