Commits


portable: add back sys/queue.h Now that the handling of including sys/queue.h is better, there's no need to remove those lines from the source. Copy the location of those original sys/queue.h lines from upstream at the same line number, so as to avoid any conflicts in the future.


use capsicum on FreeBSD Thanks to the design of Got, the libexec helpers don't need any resource (in fact they run under pledge "stdio recvfd" on OpenBSD) and so using cap_enter(2) on FreeBSD is dead-easy. While the main process can't be sandboxed on FreeBSD (needs to exec the helpers), all the tough work is done by these small libexec helpers which is also the biggest attack surface. tested by naddy, ok thomas


parse tree entries into an array instead of a pathlist Avoids some extra malloc/free in a performance-critical path. ok op@


portable: add support for landlock landlock is a new set of linux APIs that is conceptually similar to unveil(2): the idea is to restrict what a process can do on a specified part of the filesystem. There are some differences in the behaviour: the major one being that the landlock ruleset is inherited across execve(2). This just restricts the libexec helpers by completely revoking ANY filesystem access; after all they are the biggest attack surface. got send/fetch/clone *may* end up spawning ssh(1), so at the moment is not possible to landlock the main process. From Omar Polo.


portable: add FreeBSD support This adds the capability to compile got-portable on FreeBSD.


portable: initial Linux compilation This commit modifies the GoT main branch to be able to compile it under linux.


verify object ID checksums while loose objects are being accessed


add checksum parameters to got_inflate functions which did not provide them yet


make close(2) failure checks consistent; check 'close() == -1' everywhere ok millert, naddy


make fclose(3) failure checks consistent; check 'fclose() == EOF' everywhere ok millert, naddy


Stop including <sys/syslimits.h> directly. POSIX says the limits defined there are available from <limits.h>, which almost all affected source files already included anyway. ok millert stsp


do not rely on <zlib.h> to pull in <unistd.h> ok stsp


add optional 'consumed' output parameter to got_inflate_to_mem()


add copyright year for files already touched in 2020


rename to parsed_tree_entries_free for clarity (don't use with got_tree_object)


plug a memory leak; parsed tree entries were not freed


reduce the amount of memcpy() and strdup() while parsing tree entries


include <limits.h> instead of <sys/limits.h>; patch by Thomas Klausner


rename got_error_prefix_errno() to got_error_from_errno()


while (1) -> for (;;)


got_error_from_errno -> got_error_prefix_errno also add got_error_prefix_errno2 and got_error_prefix_errno3 which should hopefully all be merged into a single function with variadic args (but can't alloc mem)


check for errors from close(2)


check for errors from fclose()


eliminate got_object_open() round-trip when opening trees


don't be noisy on stderr when Ctrl-C is hit