Download raw body.
[WIP] landlock for got-portable
On Fri, Sep 24, 2021 at 11:16:36PM +0200, Omar Polo wrote: Hey Omar. Thanks for your work on this, it looks really interesting. > I haven't find out how to obtain the rpath programmatically. It would > surely fix the issue thought. (I'm manually adding /lib64 *just for > testing* and it works.) Does the following help? It took me a few moments to find the relevant comments in source files to cobble this together: #include <stdio.h> #include <link.h> #include <elf.h> int main(void) { const char *stab = NULL; const ElfW(Dyn) *dyn = _DYNAMIC, *rpath = NULL; for (; dyn->d_tag != DT_NULL; dyn++) { if (dyn->d_tag == DT_RPATH) { rpath = dyn; } else if (dyn->d_tag == DT_STRTAB) stab = (const char *)dyn->d_un.d_val; } if (stab != NULL && rpath != NULL) printf("Found rpath: %s\n", stab + rpath->d_un.d_val); return (0); } Gives: $ gcc -o rpathtest rpathtest.c -Wl,-rpath,/tmp/foo $ ./rpathtest Found rpath: /tmp/foo > I've improved this in the attached patch. There's a (disabled) > landlock_unveil and landlock_no_fs. > > landlock_unveil is temporarly disabled. The idea is to enable it (by > decommenting the #define in got_compat.h) for got.c once I understand > how to make send/fetch works under landlock. I'm going to try adding a > new libexec helper `got-dial' as per stsp@ suggestion on IRC and see how > it goes. > > landlock_no_fs prevents the process from doing ANYTHING to the > filesystem. Since all the libexec helpers run under pledge("stdio > recvfd"), it's possible to use landlock_no_fs there without other > modifications. Makes sense to me. > I think I've addressed this too. I've added compat/landlock.c that's > conditionally linked in the build if HAVE_LINUX_LANDLOCK. I was wanting to see this tied to the PLATFORM as this is Linux-specific. But no problem, I can adjust that. What you have is fine though. In terms of the patch itself, it looks fine, although my system here is not landlock-aware, so I will need to go updating the kernel, etc., to get it to be. That'll be fun! Please keep sending the patches over. I'll be publishing a "landlock" branch in got-portable in just a moment for you to reference as go along... Kindly, Thomas
[WIP] landlock for got-portable