1
0
mirror of https://github.com/openbsd/src.git synced 2026-06-18 23:33:33 +02:00
Commit Graph

3262 Commits

Author SHA1 Message Date
naddy 41ce3b17e7 man pages: add missing commas between subordinate and main clauses
jmc@ dislikes a comma before "then" in a conditional, so leave those
untouched.

ok jmc@
2022-03-31 17:27:13 +00:00
martijn b9664cab88 'e' is no longer an optional element for ober_scanf_elements.
This caused the last attribute to be dropped.

Reported by Allan Streib (astreib <at> fastmail <dot> fm)
Reminded by Raf Czlonka (rczlonka <at> gmail <dot> com)
OK tb@ claudio@
2022-03-31 09:05:15 +00:00
mestre 2eb6453669 disable further calls to unveil(2)
pointed out by brynet@
2022-02-22 08:20:35 +00:00
mestre 12dbdd4638 unveil(2) "/dev" read-only instead of using chroot(2)/chdir(2). after calling
the latter the program then also calls stat(2) and therefore it never actually
worked correctly since they were added almost 20 years now.

while here remove an implementation detail from the manpage which covered the
chroot part.

pointed out by and ok deraadt@
2022-02-21 19:49:46 +00:00
guenther d11a561f9e Nothing depends on archdep.h pulling in other #includes anymore,
so delete the #includes and hide the RELOC_* functions that are
only used by lib/csu behind "#ifdef RCRT0"

matches the others and it's hard to see how it will fail
2022-01-31 05:44:13 +00:00
guenther fdacdf06ec Inline RELOC_* into boot_md.c and simplify the code based on what
we can verify at build time.  Track dt_pltgot as an Elf_Addr instead
of an Elf_Addr* to eliminat casts on both setting and using.  Set
RELATIVE_RELOC so the ld.so Makefile can verify that it has just
the relocation types we expect.

Nothing depends on archdep.h pulling in other #includes anymore, so delete
the #includes and hide the RELOC_* functions that are only used by lib/csu
behind "#ifdef RCRT0"

Tested with full build.
2022-01-31 05:43:22 +00:00
guenther c340fc502a Update comment: struct link_map is defined in <link_elf.h>
noted by miod
2022-01-28 05:01:28 +00:00
deraadt be3edcf0ec Avoid pulling sys/param.h, by using _ALIGN instead.
sys/time.h now gets NBBY and howmany() also
ok guenther
2022-01-18 21:59:29 +00:00
guenther a175a52058 Stop supporting a GOT with only one reserved entry in static PIE
and ld.so itself: support for that in dynamic objects was removed
in 2010.

Inline RELOC_GOT() into boot_md.c and clean up the result like
boot.c, snag just the three DT_MIPS_* tags needed, and delete the
error case which is verified at build time.

ok visa@
2022-01-17 19:45:34 +00:00
guenther b0714f3814 Nothing depends on archdep.h pulling in other #includes anymore,
so delete the #includes and hide the RELOC_* functions that are
only used by lib/csu behind "#ifdef RCRT0"

these are the ones I tested; kettenis@ was on board with the concept
2022-01-17 01:35:36 +00:00
guenther b0a1b81927 Nothing depends on archdep.h pulling in other #includes anymore,
so delete the #includes and hide the RELOC_* functions that are
only used by lib/csu behind "#ifdef RCRT0"

ok jca@
2022-01-16 02:17:05 +00:00
guenther 2a697c8822 Nothing depends on archdep.h pulling in other #includes anymore,
so delete the #includes and hide the RELOC_* functions that are
only used by lib/csu behind "#ifdef RCRT0"

ok kettenis@
2022-01-16 02:16:40 +00:00
guenther b3a968f585 Nothing depends on archdep.h pulling in other #includes anymore,
so delete the #includes and hide the RELOC_* functions that are
only used by lib/csu behind "#ifdef RCRT0"

ok aoyama@
2022-01-16 02:14:27 +00:00
deraadt 1f204c7b19 archdep.h needed for _dl_dcbf, on powerpc 2022-01-08 18:30:18 +00:00
deraadt fa1e3a201e need "archdep.h" for _dl_md_plabel on hppa 2022-01-08 17:28:49 +00:00
guenther b722ba4257 Prep .c files for removing the #includes from */archdep.h
* replace #include "archdep.h" with #includes of what is used, pulling in
   "syscall.h", "util.h", and "archdep.h" as needed
 * delete #include <sys/syscall.h> from syscall.h
 * only pull in <sys/stat.h> to the three files that use _dl_fstat(),
   forward declare struct stat in syscall.h for the others
 * NBBY is for <sys/select.h> macros; just use '8' in dl_printf.c
 * <machine/vmparam.h> is only needed on i386; conditionalize it
 * stop using __LDPGSZ: use _MAX_PAGE_SHIFT (already used by malloc.c)
   where necessary
 * delete other bogus #includes, order legit per style: <sys/*> then
   <*/*>, then <*>, then "*"

dir.c improvement from jsg@
ok and testing assistance deraadt@
2022-01-08 06:49:41 +00:00
jmc 29ec0a10ce - add LDAP
- capitalise RADIUS when referring to the protocol
- remove tis

from raf czlonka
ok sthen ajacoutot
2022-01-04 13:43:14 +00:00
guenther 7544b6854c Sync from libc: Use _MAX_PAGE_SHIFT, rather than #ifdef mips64
ok otto@
2021-12-30 08:39:19 +00:00
guenther 5a2b798a48 Delete dead (duplicate) test 2021-12-30 04:48:13 +00:00
guenther 1d60349d0b Roll the syscalls that have an off_t argument to remove the explicit padding.
Switch libc and ld.so to the generic stubs for these calls.
WARNING: reboot to updated kernel before installing libc or ld.so!

Time for a story...

When gcc (back in 1.x days) first implemented long long, it didn't (always)
pass 64bit arguments in 'aligned' registers/stack slots, with the result that
argument offsets didn't match structure offsets.  This affected the nine system
calls that pass off_t arguments:
   ftruncate lseek mmap mquery pread preadv pwrite pwritev truncate

To avoid having to do custom ASM wrappers for those, BSD put an explicit pad
argument in so that the off_t argument would always start on a even slot and
thus be naturally aligned.  Thus those odd wrappers in lib/libc/sys/ that use
__syscall() and pass an extra '0' argument.

The ABIs for different CPUs eventually settled how things should be passed on
each and gcc 2.x followed them.  The only arch now where it helps is landisk,
which needs to skip the last argument register if it would be the first half of
a 64bit argument.  So: add new syscalls without the pad argument and on landisk
do that skipping directly in the syscall handler in the kernel.  Keep compat
support for the existing syscalls long enough for the transition.

ok deraadt@
2021-12-23 18:50:31 +00:00
tb 4888f4f452 spamd: convert to opaque HMAC_CTX
ok jsing
2021-12-15 17:06:01 +00:00
deraadt 1dde9cbe0d A better approach is to defined __CONCAT locally 2021-12-14 07:20:16 +00:00
deraadt 64890fb5aa Sigh. This sys/cdefs.h is hiding use of __CONCAT in a non-C context.
Needs some other repairs first.
2021-12-14 02:17:39 +00:00
deraadt e16a722a8a including sys/cdefs.h manually started as a result of netbsd trying to
macro-build a replacement for sccsid, and was done without any concern
for namespace damage.  Unfortunately this practice started infecting
other code as others were unaware they didn't need the file.
ok millert guenther
2021-12-13 18:28:39 +00:00
visa 1be08e7015 Remove an unneeded variable to fix compiler warning with clang 13.
OK jsg@
2021-11-27 15:13:09 +00:00
deraadt a5dfec8fda fix an accidental NULL deref introduced last year, found by patrick.
rewrite the code with a goto so this never happens again.
ok patrick millert
2021-11-16 21:55:21 +00:00
guenther 246ef78e32 Delete all the no-op RELOC_GOT() macros and their uses.
Annotate RELOC_DYN() on non-hppa as only used in lib/csu.
Delete some inconsistent comments, adjust whitespace, and reorder
  mips64's archdep.h so that the ld.so/*/archdep.h files look
  (almost) the same.

ok visa@ kettenis@
2021-11-14 22:07:38 +00:00
guenther b333198034 Add support for RELR relocations in the executable and share objects.
This doesn't affect ld.so's self-reloc, which still requires DT_REL/DT_RELA

ok kettenis@
2021-11-12 22:28:13 +00:00
guenther 9e6d8a17b5 Like most archs, riscv doesn't need resolution of JUMP_SLOT relocations
in static PIE binaries: delete RELOC_JMPREL and HAVE_JMPREL there.

ok kettenis@
2021-11-09 21:22:29 +00:00
deraadt b7041c0781 For open/openat, if the flags parameter does not contain O_CREAT, the
3rd (variadic) mode_t parameter is irrelevant.  Many developers in the past
have passed mode_t (0, 044, 0644, or such), which might lead future people
to copy this broken idiom, and perhaps even believe this parameter has some
meaning or implication or application. Delete them all.
This comes out of a conversation where tb@ noticed that a strange (but
intentional) pledge behaviour is to always knock-out high-bits from
mode_t on a number of system calls as a safety factor, and his bewilderment
that this appeared to be happening against valid modes (at least visually),
but no sorry, they are all irrelevant junk.  They could all be 0xdeafbeef.
ok millert
2021-10-24 21:24:15 +00:00
mestre a39bec83d1 ensure that sensitive data is zeroed out from mem.
ok beck@
2021-10-23 19:08:48 +00:00
jcs 052aa85f83 Print the name of the symbol that can't be resolved when using
LD_DEBUG

ok mpi, kn
2021-10-07 14:47:32 +00:00
jmc 75fec711f4 various formatting fixes; 2021-09-13 17:42:47 +00:00
robert ce828c7734 introduce /etc/bsd.re-config which can be used to configure the kernel
using config(8);

the contents of this configuration file will be fed to config(8) after
kernel relinking is done, so on the next boot the new kernel will have
all the configuration changes set by the user

this comes handy if you still want to use KARL while making changes
to the GENERIC kernel

diff from Paul de Weerd with input from several developers
2021-09-13 11:49:21 +00:00
deraadt 06971c39b9 remove sys/param.h use, by replacing MAXLOGNAME -> LOGIN_NAME_MAX
and MAXHOSTNAMELEN -> HOST_NAME_MAX+1
2021-09-02 20:57:58 +00:00
kn fa56b7e6af Remove unneeded calls to tls_init(3)
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-14 13:33:57 +00:00
beck bc5a8259a4 Change the error reporting pattern throughout the tree when unveil
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-12 15:09:18 +00:00
mestre 233f47c215 Hoist whole TLS initialization instead of loading the cert/key into memory first
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-07-07 07:28:56 +00:00
kettenis 6a3ad11dda Make lazy binding work on riscv64.
prompted by deraadt@
2021-06-26 14:50:25 +00:00
kettenis c5bd6813c1 Build ld.so with --march=rv64imac on riscv64 to be absolutely sure that
ld.so doesn't use the FP registers.

ok deraadt@
2021-06-26 14:47:54 +00:00
kettenis bde8342fa1 Use AFLAGS when building syscall stubs. Drop AINC wich isn't used.
ok deraadt@
2021-06-26 14:46:48 +00:00
semarie 296fbf9f7d add RTLD_NODELETE support
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-06-02 07:29:03 +00:00
jan 18a2fcc362 Convert K&R function definitions to modern C.
OK naddy@, millert@
2021-05-31 16:18:01 +00:00
kn f9a87ca699 program headers: do not rely on DYNAMIC coming before GNU_RELRO
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-25 17:01:36 +00:00
jan 0c50dd5d47 Constify function parameters.
OK martijn@
2021-05-23 17:01:21 +00:00
jan 122337087b Remove useless fflush(3) calls. lreply() already called fflush(3).
OK martijn@
2021-05-22 14:30:46 +00:00
jan c7141df29c Remove useless islower(2) before toupper(3).
OK martijn@
2021-05-22 14:25:30 +00:00
jan 330fc432c4 Removes the useless FILE* parameter of get_line().
While here fix minor whitespace mistake.

"looks fine to me" chris@
2021-05-20 15:21:03 +00:00
drahn 94ffa4e959 Correct problem in riscv64 dtors execution load the function pointer
correctly and do not overwrite it in csu.
allows most ld.so regressions to pass
confirmed by jsg@, ok kettenis
2021-05-16 16:00:50 +00:00
jan fcba609bc7 Add pledge for ftpd's user processes.
OK tobhe@
2021-05-15 13:37:43 +00:00