summaryrefslogtreecommitdiff
path: root/libexec
AgeCommit message (Collapse)Author
2021-07-14Remove unneeded calls to tls_init(3)kn
As per the manual and lib/libtls/tls.c revision 1.79 from 2018 "Automatically handle library initialisation for libtls." initialisation is handled automatically by other tls_*(3) functions. Remove explicit tls_init() calls from base to not give the impression of it being needed. Feedback tb OK Tests mestre
2021-07-12Change the error reporting pattern throughout the tree when unveilBob Beck
fails to report the path that the failure occured on. Suggested by deraadt@ after some tech discussion. Work done and verified by Ashton Fagg <ashton@fagg.id.au> ok deraadt@ semarie@ claudio@
2021-07-07Hoist whole TLS initialization instead of loading the cert/key into memory firstRicardo Mestre
and setting them up later on, nowadays it's possible to do both steps in just one go through tls_config_set_{cert,key}_file(3) so use it and then init TLS. No functional change. OK kn@
2021-06-26Make lazy binding work on riscv64.Mark Kettenis
prompted by deraadt@
2021-06-26Build ld.so with --march=rv64imac on riscv64 to be absolutely sure thatMark Kettenis
ld.so doesn't use the FP registers. ok deraadt@
2021-06-26Use AFLAGS when building syscall stubs. Drop AINC wich isn't used.Mark Kettenis
ok deraadt@
2021-06-02add RTLD_NODELETE supportSebastien Marie
if RTLD_NODELETE isn't POSIX, it is widely deployed: at least linux, freebsd, dragonfly, netbsd, solaris, illumos, apple, and fuchsia have it. ok kettenis@ on previous version with help from and ok guenther@ diff partially inspired from a diff from brad@
2021-05-31Convert K&R function definitions to modern C.jan
OK naddy@, millert@
2021-05-25program headers: do not rely on DYNAMIC coming before GNU_RELROkn
Except for some specific cases (thanks guenther) ELF mandates nothing but the file header be at a fixed location, hence ld.so(1) must not assume any specific order for headers, segments, etc. Looping over the program header table to parse segment headers, _dl_boot() creates the executable object upon DYNAMIC and expects it to be set upon GNU_RELRO, resulting in a NULL dereference iff that order is reversed. Store relocation bits in temporary variables and update the executable object once all segment headers are parsed to lift this dependency. Under __mips__ _dl_boot() later on uses the same temporary variable, so move nothing but the declaration out of MI code so as to not alter the MD code's logic/behaviour. Found while porting patchelf(1) from NixOS. OK guenther
2021-05-23Constify function parameters.jan
OK martijn@
2021-05-22Remove useless fflush(3) calls. lreply() already called fflush(3).jan
OK martijn@
2021-05-22Remove useless islower(2) before toupper(3).jan
OK martijn@
2021-05-20Removes the useless FILE* parameter of get_line().jan
While here fix minor whitespace mistake. "looks fine to me" chris@
2021-05-16Correct problem in riscv64 dtors execution load the function pointerDale Rahn
correctly and do not overwrite it in csu. allows most ld.so regressions to pass confirmed by jsg@, ok kettenis
2021-05-15Add pledge for ftpd's user processes.jan
OK tobhe@
2021-04-28riscv64 ld.soDale Rahn
derived from arm64 go ahead deraadt@
2021-04-19Same internal consistency check as libc malloc: size in hash tableOtto Moerbeek
should correspond to size of chunk meta data
2021-03-16On i386 don't attempt to map shared libraries in low memory whenKurt Miller
a large executable's .text section crosses the 512MB exec line. Executables that have MAXTSIZ > 64MB can map above the default 512MB exec line. When this happens, shared libs that attempt to map into low memory will find their .data section can not be mapped. ld.so will attempt to remap the share lib at higher addresses until it can be mapped. For very large executables like chrome this process is very time consuming. This change detects how much of the executable's .text section exceeds 512MB and uses that as the initial hint for shared libs to map into which avoids attempting to map into blocked memory. okay deraadt@
2021-01-02Check auth_mkvalue(3) return value for NULL (malloc failure).Todd C. Miller
For constant strings we don't actually need to use auth_mkvalue(3). Problem reported by Ross L Richardson.
2020-12-27We know about optreset from unistd.h.Florian Obser
From Jan Stary, thanks. OK martijn
2020-12-26Fix a nasty mem leak in ld.so's own malloc. This was hard to diagnose, sinceOtto Moerbeek
malloc dumping and gdb do not help at all when studying ld.so. In the end it turns out ot be a simple merge error causing extra mmap calls. ok miller@ tb@
2020-11-28Add retguard to macppc kernel locore.S, ofwreal.S, setjmp.Sgkoehler
This changes RETGUARD_SETUP(ffs) to RETGUARD_SETUP(ffs, %r11, %r12) and RETGUARD_CHECK(ffs) to RETGUARD_CHECK(ffs, %r11, %r12) to show that r11 and r12 are in use between setup and check, and to pick registers other than r11 and r12 in some kernel functions. ok mortimer@ deraadt@
2020-10-26Retguard asm macros for powerpc libc, ld.sogkoehler
Add retguard to some, but not all, asm functions in libc. Edit SYS.h in libc to remove the PREFIX macros and add SYSENTRY (more like aarch64 and powerpc64), so we can insert RETGUARD_SETUP after SYSENTRY. Some .S files in this commit don't get retguard, but do stop using the old prefix macros. Tested by deraadt@, who put this diff in a macppc snap.
2020-10-16Use the retguard macros from asm.h to protect the system call stubs.Theo de Raadt
ok mortimer kettenis
2020-10-15make three mib[] arrays const, as was done in libcTheo de Raadt
2020-10-11Don't skip file systems just because the parent fs is nodev and nosuid.Todd C. Miller
Fixes instances where a mount point uses the nodev and nosuid options but another file system mounted inside that hierarchy does not. OK schwarze@
2020-09-17afs, nnpfs, and procfs are no longer supported,Ingo Schwarze
so stop looking for them in mount(8) output; no functional change intended; OK millert@
2020-09-14Do not bother scanning file systems that are both nodev and nosuidIngo Schwarze
for SUID, SGID, and device files, implementing an idea that deraadt@ came up with based on a somewhat similar idea from millert@ after a loosely related comment from Rupert Gallagher on misc@. While here, minimally simplify the way mount options are parsed, hoping to make the parsing more readable and also more robust. OK millert@ deraadt@
2020-09-14No need to check for NULL before calling free.Martijn van Duren
from miod@
2020-09-12Documentation fixes by jmc.Martijn van Duren
2020-09-12Import login_ldap.Martijn van Duren
The code is based login_ldap port, but uses our own aldap implementation instead of openldap. It also uses a stand alone configuration file instead of login.conf, since setting this up might contain information not destined for everyone to see. OK bluhm@ "Go for it" deraadt@
2020-09-06Move definiton of struct token_types *tt to init.c from header file.mortimer
Makes it build with -fno-common. ok deraadt
2020-08-11clang 10 now emits calls to __multi3 from libcompiler_rtJeremie Courreges-Anglas
Hints from kettenis@, ok kettenis@ deraadt@
2020-07-18Use the same names as the 64-bit PowerPC ELF ABI for the relocations.Mark Kettenis
2020-07-16Rewrite loop to match what is written down in the ABI document.Mark Kettenis
ok drahn@
2020-07-16Make lazy binding work.Mark Kettenis
Committing on behalf of drahn@ who is a bit busy.
2020-07-08Clarify man pagejob
OK sobrado@ jmc@
2020-06-28Disable powerpc64 lazy binding, code was not for 64 bit ABIDale Rahn
DT_PPC_GOT is not used on powerpc64, delete.
2020-06-28Powerpc64 ld.so asm code needs to conform to Powerpc64 abi, not 32bit.Dale Rahn
ok kettenis@
2020-06-25PowerPC64 ld.so code.Dale Rahn
Mostly ported, code runs far enough to start first symbol string lookup. build with -gdwarf-4 to remove asm warnings. Do not bother supporting 32 bit non-pic relocations in shared libraries. (however leave the code there for now)
2020-05-27Remove support for world-writable mail spools.Todd C. Miller
They won't work any more due to pledge restrictions so just print an error and exit if the spool is world-writable. OK beck@
2020-05-15Fix handling of passwd entries with an empty password.Todd C. Miller
Initialize "pass" to the empty string instead of NULL, otherwise crypt_checkpass() will dereference NULL. From Yuichiro Naito via yasuoka@. OK deraadt@
2020-05-08ld.so(1) also ignores LD_LIBRARY_PATH an friends for set-group-ID executablesJeremie Courreges-Anglas
While here, use consistent casing and don't use .Ev for set-user-ID/set-group-ID. from Miod
2020-05-08LD_DEBUG is ignored for set-user-ID and set-group-ID executablesJeremie Courreges-Anglas
from Miod
2020-03-27Add missing space in stack smash handler error message.Matthieu Herrb
ok kettenis@, deraadt@
2020-03-13Anthony Steinhauser reports that 32-bit arm cpus have the same speculationTheo de Raadt
problems as 64-bit models. To resolve the syscall speculation, as a first step "nop; nop" was added after all occurances of the syscall ("swi 0") instruction. Then the kernel was changed to jump over the 2 extra instructions. In this final step, those pair of nops are converted into the speculation-blocking sequence ("dsb nsh; isb"). Don't try to build through these multiple steps, use a snapshot instead. Packages matching the new ABI will be out in a while... ok kettenis
2020-03-13Anthony Steinhauser reports that 32-bit arm cpus have the same speculationTheo de Raadt
problems as 64-bit models. For the syscall instruction issue, add nop;nop after swi 0, in preparation for jumping over a speculation barrier here later. (a lonely swi 0 was hiding in __asm in this file)
2020-03-11Anthony Steinhauser reports that 32-bit arm cpus have the same speculationTheo de Raadt
problems as 64-bit models. For the syscall instruction issue, add nop;nop after swi 0, in preparation for jumping over a speculation barrier here later. ok kettenis
2020-03-04Avoid passing a NULL name to retrieve(), use "." instead.Todd C. Miller
Fixes a "vfprintf %s NULL" warning in ftpd. OK deraadt@ tb@
2020-02-18Now that the kernel skips the two instructions immediately followingMark Kettenis
a syscall, replace the double nop with a dsb nsh; isb; sequence which stops the CPU from speculating any further. This fix was suggested by Anthony Steinhauser. ok deraadt@