commit cc1d425

shtrophic  ·  2025-01-23 19:15:23 +0000 UTC
parent fda3057
Sandbox fixes

- allow reading `/dev/urandom` as it is shown as a failed syscall when
  tracing
- resolve `/etc/ssl/cert.pem` in case it is a symlink
1 files changed,  +8, -1
+8, -1
 1@@ -71,15 +71,22 @@ LL_BEGIN(sbox_enter_linux_, const char* basedir, const char *address, int smail)
 2              LANDLOCK_ACCESS_FS_REFER_COMPAT,
 3         s  = LANDLOCK_ACCESS_FS_MAKE_SOCK,
 4         x  = LANDLOCK_ACCESS_FS_EXECUTE;
 5+    char *resolved_path = NULL;
 6 
 7     LL_PATH(basedir,                rf|rd|w|c);
 8     LL_PATH("/tmp",                 rf|rd|w|c);
 9 #ifndef WITHOUT_SHM
10     LL_PATH("/dev/shm",             rf|w|c   );
11 #endif
12+    LL_PATH("/dev/urandom",         rf       );
13     LL_PATH("/etc/resolv.conf",     rf       );
14     LL_PATH("/etc/hosts",           rf       );
15-    LL_PATH("/etc/ssl",             rf       );
16+    LL_PATH("/etc/ssl",             rf|rd    );
17+    if ((resolved_path = realpath("/etc/ssl/cert.pem", NULL))) {
18+        /* some distros like cert.pem to be a symlink */
19+        LL_PATH(resolved_path,      rf       );
20+        free(resolved_path);
21+    }
22     LL_PATH("/usr/share/zoneinfo",  rf       );
23 
24     if (mtime("/etc/pki") > 0)