From 340f8eb5b54f6d5a0d9cca23d918d1d30f80e7fb Mon Sep 17 00:00:00 2001 From: sergio Date: Fri, 17 Jul 2026 04:09:37 -0400 Subject: [PATCH] =?UTF-8?q?static:=20curl=20cumple=20link=3Dstatic=20?= =?UTF-8?q?=E2=80=94=20el=20binario=20sellado=20NO=20corr=C3=ADa=20en=20el?= =?UTF-8?q?=20host?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Primera de las 28 que static-audit.sh destapó. libtool ignoraba el -static del lab (lo lee como "preferí mis .a"), así que el curl sellado salía dinámico con NEEDED libz.so.1 + libc.so — y libc.so es el soname de la musl de zig, que en el host son 255B de linker script. Resultado: el artefacto NO arrancaba fuera del sandbox ("Error relocating /lib/libz.so.1: __snprintf_chk"). Fix: LDFLAGS="-all-static -no-pie" en compile Y en install (libtool relinkea al instalar); nunca en configure, donde rompería los link-tests. Verificado: 0 NEEDED, corre en el HOST (curl 8.20.0, OpenSSL/3.5.4, zlib/1.3.1) y hace HTTPS real (http=200). Bit-repro: b3:19a919b28c25 ×2. Co-Authored-By: Claude Opus 4.8 --- recipes/curl.toml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/recipes/curl.toml b/recipes/curl.toml index 83c271fa..f64fbde1 100644 --- a/recipes/curl.toml +++ b/recipes/curl.toml @@ -25,8 +25,15 @@ configure = ''' --disable-ldap --enable-ipv6 --enable-unix-sockets \ --with-ca-path=/etc/ssl/certs ''' -compile = 'make' -install = 'make DESTDIR=/out install' +# -all-static (patrón de jq/parted/shadow/procps-ng): curl linka CON LIBTOOL, que lee el `-static` +# del lab como "preferí mis .a", NO como flag al linker ⇒ `link = "static"` se ignoraba EN SILENCIO +# y el binario salía dinámico (`NEEDED: libz.so.1, libc.so`). `libc.so` es el soname de la musl que +# zig bundlea; en el host son 255B de linker script ⇒ el curl sellado NO CORRÍA fuera del sandbox +# ("Error relocating /lib/libz.so.1: __snprintf_chk"). Medido con scripts/static-audit.sh. +# Va SÓLO en compile e install: en configure rompería los link-tests (no pasan por libtool), y en +# install porque libtool RELINKEA el binario al instalar. +compile = 'make LDFLAGS="-all-static -no-pie" -j"$(nproc)"' +install = 'make DESTDIR=/out install LDFLAGS="-all-static -no-pie"' [deps] build = ["openssl", "zlib", "perl"]