summaryrefslogtreecommitdiff
path: root/libexec
AgeCommit message (Collapse)Author
2023-09-05Log a dummy "<unknown>" IP address in the unlikely event that genameinfo(3) ↵Jeremie Courreges-Anglas
fails clang-16 warning reported by robert@, ok tb@ millert@
2023-08-15ldd can pledge "stdio rpath proc exec prot_exec". We can later bifurbicateTheo de Raadt
at the dlopen vs execve split, dropping either "proc" or "prot_exec". ok gnezdo
2023-08-15Improve handling of dlopen(RTLD_TRACE) aka ldd, of a library thatPhilip Guenther
is already loaded: * add a 'trace' argument to _dl_show_objects() and exit the walk-the-objects loop if you hit that traced object * in dlopen(), pass the trace object to _dl_show_objects() * also, invoke _dl_show_objects() + exit if the object was already opened * pass NULL to _dl_show_objects() for all the other calls * oh hey, _dl_tracelib is now superfluous: _dl_show_objects() should do the walk-the-objects loop only if trace is not NULL. Problem noted by gnezdo@ ok millert@
2023-08-15Skip the _dl_msyscall() invocation if tracing library loading.Philip Guenther
Problem noted by gnezdo@ ok millert@
2023-08-12Check for a full read, avoid warn when errno might be unmodifiedGreg Steuck
Promote size from int to size_t. From: lucas at sexy dot is Regress tests by gnezdo@ deraadt: yes
2023-07-24I added the 2nd argument (execpromises) to pledge(2), and then huntedTheo de Raadt
for more than a year code which could use it; but in all non-trivial circumstances (programs which would benefit), I was stopped by issues (in particular by environment variable behavious). But I never looked in ldd(1). This is the FIRST one which is completely obvious. spledge(NULL, "stdio rpath") ok guenther
2023-07-13- use IS_ELF() to check the ELF magic bytesJasper Lievisse Adriaanse
- reject non-sensical program header values which would result in a crash when accessing the 0 bytes sized buffer allocated due to it ok deraadt@ kettenis@
2023-07-12validate alignment of ELF program headersJasper Lievisse Adriaanse
2023-07-08turn an ifdef'd _dl_printf call into DL_DEB and various whitespace fixesJasper Lievisse Adriaanse
sure deraadt@
2023-07-08zap stray backslashJasper Lievisse Adriaanse
ok deraadt@
2023-07-04The recent change to DIOCGETRULE allows applications whichAlexandr Nedvedicky
periodically read rules from pf(4) to consume all kernel memory. The bug has been discovered and root caused by florian@. In this particular case it was snmpd(8) what ate all kernel memory. This commit introduces DIOCXEND to pf(4) so applications such as snmpd(8) and systat(1) to close ticket/transaction when they are done with fetching the rules. This change also updates snmpd(8) and systat(1) to use newly introduced DIOCXEND ioctl(2). OK claudio@, deraadt@, kn@
2023-06-05use getline(3) instead of fgetln(3)Omar Polo
while here simplify the "From " check too. ok millert@
2023-05-18If you disable retpolineplt then _dl_bind_start is called with anPhilip Guenther
indirect branch, so include an endbr64 Just In Case. ok deraadt@
2023-05-15cast to '(long long)' instead of '(long long int)'Omar Polo
requested by deraadt@, ok tb@
2023-05-10cast off_t to long long int for printingOmar Polo
reduces the diff with opensmtpd-portable. ok tb@
2023-04-27revert cache lookup for full pathnamesRobert Nagy
2023-04-25endbr64 is potentially neccessary in the syscall stubs.Theo de Raadt
2023-04-24Since ENTRY() already inserts a BTI instructions so don't add another one.Mark Kettenis
ok patrick@
2023-04-24do a cache lookup as well in case a full pathname is passed to dlopenRobert Nagy
2023-04-19remove duplicate includesJonathan Gray
2023-04-19remove duplicate includeJonathan Gray
feedback tb@
2023-04-13Avoid an overflow in the ELF SYSV ABI hash function.Todd C. Miller
The hash function is supposed to return a value less than or equal to 0x0fffffff. Due to a bug in the sample code supplied with the ELF SYSV ABI documentation, the hash function can overflow on 64-bit systems. Apply the same fix used by GNU libc, MUSL libc and FreeBSD. Prompted by https://maskray.me/blog/2023-04-12-elf-hash-function OK tb@ miod@
2023-04-09Treat symlinks better in $ORIGIN determination in ld.soGreg Steuck
Now symlinking an executable away from the rest of its installation tree no longer prevents it from finding the libraries. This matches the behavior of other OS linkers. Prompted by a behavior change in lang/ghc test suite. Swapped the order of dirname/realpath in _dl_origin_path. Added some regress tests that pass and then bin3 that fails without this change and reflects the behavior needd for lang/ghc. Suggestion by semarie@, OK deraadt@
2023-03-31Call entry point of the executable through register x17. This allows itMark Kettenis
to be a normal C function that starts with "bti c" when BTI contro flow integretry enforcement is in place. Add "bti c" to _dl_bind_start(). Remove unused _rtld_tlsdesc() function to avoid having to add "bti c" to it. ok deraadt@
2023-03-08Delete obsolete /* ARGSUSED */ lint comments.Philip Guenther
ok miod@ millert@
2023-03-02rad_recv: verify length field in received auth_hdr_t before using it.Todd C. Miller
Reported by Peter J. Philipp. OK deraadt@
2023-02-20Adjust inline !libc check to match the intent in ld.soGreg Steuck
right, deraadt@
2023-02-18Lookup the start,len of the "execve" stub in libc.so, and tell the kernelTheo de Raadt
where it is with pinsyscall(). In non-static binaries, kernel execve(2) will now insist upon being called from that small region. Arriving from a different region smells like ROP methodology, and the process is killed.
2023-02-17Remove unused variables; ok millert@Miod Vallat
2023-02-10Explicitly mark the text LOAD as FLAGS(5), meaning RX, with a comment.Theo de Raadt
This is the default value of the linker, but I really like placing the comment "architecturally required data islands".
2023-02-02unify spacing for LOAD FLAGS linesTheo de Raadt
2023-02-02i386 and alpha ld.so also work with X-only text LOAD. There is noTheo de Raadt
hardware enforcement for this, but uvm can some of it's own tricks on occasion.
2023-01-31powerpc xonly for G5 is coming. ld.so can have xonly text.Theo de Raadt
ok gkoehler
2023-01-29Accumulate intermediate imutables locally before applyingGreg Steuck
OK deraadt
2023-01-29Unite all nitems copies in ld.so/util.hGreg Steuck
OK deraadt
2023-01-29powerpc64 xonly works; ld.so can be switched overTheo de Raadt
2023-01-20amd64 now has xonly support via the PKU feature. Marking ld.so exec-onlyTheo de Raadt
is no longer a NOP on those systems, let's do it.
2023-01-14Add missing void to function definitionTheo Buehler
2023-01-12Use proper sparc64 illtrap instruction as text sections filler, rather thanMiod Vallat
the x86 one.
2023-01-11be very paranoid like other architectures and force no-jump-tablesTheo de Raadt
came up in two seperate conversations with miod and kettenis
2023-01-11put LD_SCRIPT in the canonical locationTheo de Raadt
2023-01-11Add ld.so linker scripts on the remaining platforms.Miod Vallat
2023-01-11force-disable jump tables in ld.so building on sparc64, to ease theTheo de Raadt
exonly transition for people building through an upcoming commit series
2023-01-11the kernel on mips64 (octeon, loongson) is in good enough shape to runTheo de Raadt
--execute-only ld.so (meaning FLAGS (1) on the LOAD line for the text segment, in the ld.script). the linker, when using built-in linker scripts, is not ready yet for other libraries / binaries..
2023-01-11Add retguard to amd64 syscalls.Todd Mortimer
Since we got rid of padded syscalls we have enough registers to do this. ok deraadt@ ok kettenis@
2023-01-10hppa ld.so works with executable-only text (non-readable)Theo de Raadt
2023-01-09riscv64 ld.so is ready to be xonlyTheo de Raadt
ok kettenis
2023-01-09Rewrite the hppa assembly code to avoid reads from .text, by using theMark Kettenis
standard PIC magic. This makes the code similar to what we already use for rcrt0.o. This makes it ready for execute-only. Build C code using -fno-jump-tables to make it ready for execute-only. ok deraadt@, miod@
2023-01-09In preparation for upcoming execute-only support, change the magic branchMark Kettenis
instruction used by __canonicalize_funcptr_for_compare() from "bl" into "b". This allows __canonicalize_funcptr_for_compare() to execute the branch instead of decoding the instruction to find the address of _dl_bind(). This is the first step in the transition to a new ABI. Once an updated ld.so has been installed, we can change __canonicalize_funcptr_for_compare() (which lives in libgcc) and rebuild everything with a new libgcc. Only then we can actually make ld.so executable-only. ok deraadt@, miod@
2022-12-26spelling fixes; from paul tagliamonteJason McIntyre