nixos/modules/security/wrappers: limit argv0 to 512 bytes

This mitigates CVE-2023-6246, crucially without a mass-rebuild.

Change-Id: I762a0d489ade88dafd3775d54a09f555dc8c2527

edef b4c98406 97b17f32

Changed files
+7
nixos
modules
security
wrappers
+7
nixos/modules/security/wrappers/wrapper.c
···
int main(int argc, char **argv) {
ASSERT(argc >= 1);
+
// argv[0] goes into a lot of places, to a far greater degree than other elements
+
// of argv. glibc has had buffer overflows relating to argv[0], eg CVE-2023-6246.
+
// Since we expect the wrappers to be invoked from either $PATH or /run/wrappers/bin,
+
// there should be no reason to pass any particularly large values here, so we can
+
// be strict for strictness' sake.
+
ASSERT(strlen(argv[0]) < 512);
+
int debug = getenv(wrapper_debug) != NULL;
// Drop insecure environment variables explicitly