deraadt [Tue, 19 Dec 2023 16:31:50 +0000 (16:31 +0000)]
include KTRFAC_PINSYSCALL in the ktrace options
deraadt [Tue, 19 Dec 2023 16:13:22 +0000 (16:13 +0000)]
whitespaces
deraadt [Tue, 19 Dec 2023 14:40:04 +0000 (14:40 +0000)]
add a malloc type for pinsyscall arrays
tb [Tue, 19 Dec 2023 13:50:19 +0000 (13:50 +0000)]
Move constraints files to the etc set
These are config files and once modified they should not be overwritten
if they have local changes.
ok deraadt job
claudio [Tue, 19 Dec 2023 10:32:20 +0000 (10:32 +0000)]
Show the RTR protocol version in the `bgpctl show rtr` output.
Knowing the version is essential to understand if ASPA PDUs are included
or not.
OK tb@
job [Tue, 19 Dec 2023 08:10:19 +0000 (08:10 +0000)]
Add markers
OK tb@
jmc [Tue, 19 Dec 2023 07:24:42 +0000 (07:24 +0000)]
- new sentence, new line
- zap an unused Pp
otto [Tue, 19 Dec 2023 06:59:28 +0000 (06:59 +0000)]
A small cleanup of malloc_bytes(), getting rid of a goto and a tiny
bit of optimization; ok tb@ asou@
deraadt [Tue, 19 Dec 2023 06:59:17 +0000 (06:59 +0000)]
sync
deraadt [Tue, 19 Dec 2023 06:58:36 +0000 (06:58 +0000)]
the 4th argument of pinsyscalls() is now "number of pin elements",
not "size of the storage of the pin elements"
jmc [Tue, 19 Dec 2023 06:57:34 +0000 (06:57 +0000)]
sort -C, and add to usage(); ok djm
deraadt [Tue, 19 Dec 2023 06:57:12 +0000 (06:57 +0000)]
pinsyscalls(2) has changed a little bit, and I can provide more advice
for how it is used (in ld.so, it's not like anyone else can call it).
Also document the errors..
djm [Tue, 19 Dec 2023 06:41:14 +0000 (06:41 +0000)]
correct section numbers; from Ed Maste
deraadt [Tue, 19 Dec 2023 06:27:45 +0000 (06:27 +0000)]
correct alignment placement
bluhm [Tue, 19 Dec 2023 01:11:21 +0000 (01:11 +0000)]
soreceive() must not hold mutex when calling sblock().
In my recent commit I missed that sblock() may sleep while soreceive()
holds the incpb mutex. Call pru_lock() after sblock().
Reported-by: syzbot+f79c896ec019553655a0@syzkaller.appspotmail.com
Reported-by: syzbot+08b6f1102e429b2d4f84@syzkaller.appspotmail.com
OK mvs@
job [Mon, 18 Dec 2023 23:42:20 +0000 (23:42 +0000)]
Rephrase some warnings related to Manifests
Feedback from Tom Harrison (APNIC)
with and OK tb@
tb [Mon, 18 Dec 2023 21:15:00 +0000 (21:15 +0000)]
cmac: use block_size rather than bl
This is purely mechanical apart from a single line wrap.
deraadt [Mon, 18 Dec 2023 17:19:07 +0000 (17:19 +0000)]
correct section the SYS_kbind syscall pin record goes into
noticed by gnezdo
martijn [Mon, 18 Dec 2023 16:58:26 +0000 (16:58 +0000)]
Add a family argument to host(). This allows us to force a specific address
family for source-address, which must be in line with the destination
address.
OK jca@
martijn [Mon, 18 Dec 2023 16:56:01 +0000 (16:56 +0000)]
Fix copy-paste error for setting source-address in trap receiver.
OK jca@
djm [Mon, 18 Dec 2023 15:58:56 +0000 (15:58 +0000)]
match flag type (s/int/u_int)
djm [Mon, 18 Dec 2023 14:50:08 +0000 (14:50 +0000)]
regress test for agent PKCS#11-backed certificates
djm [Mon, 18 Dec 2023 14:49:39 +0000 (14:49 +0000)]
regress test for constrained PKCS#11 keys
djm [Mon, 18 Dec 2023 14:48:44 +0000 (14:48 +0000)]
openssh-9.6
djm [Mon, 18 Dec 2023 14:48:08 +0000 (14:48 +0000)]
ssh-agent: record failed session-bind attempts
Record failed attempts to session-bind a connection and refuse signing
operations on that connection henceforth.
Prevents a future situation where we add a new hostkey type that is not
recognised by an older ssh-agent, that consequently causes session-bind
to fail (this situation is only likely to arise when people mix ssh(1)
and ssh-agent(1) of different versions on the same host). Previously,
after such a failure the agent socket would be considered unbound and
not subject to restriction.
Spotted by Jann Horn
djm [Mon, 18 Dec 2023 14:47:44 +0000 (14:47 +0000)]
ban user/hostnames with most shell metacharacters
This makes ssh(1) refuse user or host names provided on the
commandline that contain most shell metacharacters.
Some programs that invoke ssh(1) using untrusted data do not filter
metacharacters in arguments they supply. This could create
interactions with user-specified ProxyCommand and other directives
that allow shell injection attacks to occur.
It's a mistake to invoke ssh(1) with arbitrary untrusted arguments,
but getting this stuff right can be tricky, so this should prevent
most obvious ways of creating risky situations. It however is not
and cannot be perfect: ssh(1) has no practical way of interpreting
what shell quoting rules are in use and how they interact with the
user's specified ProxyCommand.
To allow configurations that use strange user or hostnames to
continue to work, this strictness is applied only to names coming
from the commandline. Names specified using User or Hostname
directives in ssh_config(5) are not affected.
feedback/ok millert@ markus@ dtucker@ deraadt@
djm [Mon, 18 Dec 2023 14:47:20 +0000 (14:47 +0000)]
stricter handling of channel window limits
This makes ssh/sshd more strict in handling non-compliant peers that
send more data than the advertised channel window allows. Previously
the additional data would be silently discarded. This change will
cause ssh/sshd to terminate the connection if the channel window is
exceeded by more than a small grace allowance.
ok markus@
djm [Mon, 18 Dec 2023 14:46:56 +0000 (14:46 +0000)]
Make it possible to load certs from PKCS#11 tokens
Adds a protocol extension to allow grafting certificates supplied by
ssh-add to keys loaded from PKCS#11 tokens in the agent.
feedback/ok markus@
djm [Mon, 18 Dec 2023 14:46:12 +0000 (14:46 +0000)]
apply destination constraints to all p11 keys
Previously applied only to the first key returned from each token.
ok markus@
djm [Mon, 18 Dec 2023 14:45:49 +0000 (14:45 +0000)]
add "ext-info-in-auth@openssh.com" extension
This adds another transport protocol extension to allow a sshd to send
SSH2_MSG_EXT_INFO during user authentication, after the server has
learned the username that is being logged in to.
This lets sshd to update the acceptable signature algoritms for public
key authentication, and allows these to be varied via sshd_config(5)
"Match" directives, which are evaluated after the server learns the
username being authenticated.
Full details in the PROTOCOL file
djm [Mon, 18 Dec 2023 14:45:17 +0000 (14:45 +0000)]
implement "strict key exchange" in ssh and sshd
This adds a protocol extension to improve the integrity of the SSH
transport protocol, particular in and around the initial key exchange
(KEX) phase.
Full details of the extension are in the PROTOCOL file.
with markus@
bluhm [Mon, 18 Dec 2023 13:30:44 +0000 (13:30 +0000)]
Fix race between ifconfig destroy and ARP timer.
After if_detach() has called if_remove(), if_get() will return NULL.
Before if_detach() grabs the net lock, ARP timer can still run. In
this case arptfree() should just return, instead of triggering an
assertion because ifp is NULL. The ARP route will be deleted later
when in_ifdetach() calls in_purgeaddr().
OK kn@ mvs@ claudio@
otto [Mon, 18 Dec 2023 13:23:52 +0000 (13:23 +0000)]
Check if calloc calls succeeded; ok millert@
tb [Mon, 18 Dec 2023 13:12:43 +0000 (13:12 +0000)]
Clean up EVP_PBE_CipherInit() a little
This is mostly stylistic cleanup, making the control flow a bit more
obvious. There's one user-visible change: we no longer go out of our
way to provide info about the unknown algorithm. The nid is enough.
ok joshua jsing
bluhm [Mon, 18 Dec 2023 13:11:20 +0000 (13:11 +0000)]
Run bind(2) system call in parallel.
For protocols that care about locking, use the shared net lock to
call sobind(). Use the per socket rwlock together with shared net
lock. This affects protocols UDP, raw IP, and divert. Move the
inpcb mutex locking into soreceive(), it is only used there. Add
a comment to describe the current inmplementation of inpcb locking.
OK mvs@ sashan@
benno [Mon, 18 Dec 2023 09:51:06 +0000 (09:51 +0000)]
bump version
martijn [Mon, 18 Dec 2023 09:42:57 +0000 (09:42 +0000)]
Fix two memory leaks:
- MIB_snmpInReadOnlys was tried to be registered twice, leading to a leak
of the second instance. Prevent this mistake in the future by making a
double registration fatal.
- The response buffer is owned by the backend, so the backend must also
free it.
OK tb@
tb [Mon, 18 Dec 2023 06:06:57 +0000 (06:06 +0000)]
Remove EVP_MD_meth_*() dependency
This broken API was added for Erlang's otp-test-engine which was disabled
for LibreSSL without explanation shortly afterward. So we can remove this
hazard again.
Unfortunately, libfido2 started using EVP_MD_meth_dup(), but for no good
reason: they dup static data into a buffer that is passed unmodified to
EVP_PKEY_CTX_set_signature_md() only to be freed right after. This makes
no sense.
Rework this and the ifdefery to make it clear that it is OpenSSL who broke
API contracts (again), not LibreSSL.
ok djm jsing
tb [Sun, 17 Dec 2023 08:32:26 +0000 (08:32 +0000)]
c2sp: replace openssl 3.0 with 3.2 support
mvs [Sat, 16 Dec 2023 22:17:08 +0000 (22:17 +0000)]
Make `fuse_rd_filtops' mpsafe.
Introduce `fd_lock' rwlock(9) and use it for `fd_fbufs_in' fuse buffers
queue and `fd_rklist' knotes list protection.
Tested by Rafael Sadowski.
Discussed with and ok from bluhm
mvs [Sat, 16 Dec 2023 22:16:02 +0000 (22:16 +0000)]
Rework pflowioctl() lock dances.
Release netlock and take `sc_lock' rwlock(9) just in the beginning of
pflowioctl() and do corresponding operations in the end. Use `sc_lock'
to protect `sc_dying'.
We need to release netlock not only to keep locks order with `sc_lock'
rwlock(9), but also because pflowioctl() calls some operations like
socreate() or soclose() on udp(4) socket. Current implementation has
many relocking places which breaks atomicy, so merge them into one.
The `sc_lock' rwlock(9) is taken during all pflowioctl() call, so
`sc_dying' atomicy is not broken.
Not the ideal solution, but better then we have now.
Tested by Hrvoje Popovski.
Discussed with and ok from sashan
tb [Sat, 16 Dec 2023 19:14:56 +0000 (19:14 +0000)]
ASN1_STRING_TABLE_get.3: grammar: have -> has
tb [Sat, 16 Dec 2023 17:40:22 +0000 (17:40 +0000)]
EVP_EncryptUpdate(): make block_size and block_mask const
suggested by millert
tb [Sat, 16 Dec 2023 15:22:40 +0000 (15:22 +0000)]
First cleanup pass over EVP_EncryptUpdate()
Use more sensible variable names in order to make the logic a bit easier
to follow. The variables may be renamed in a later pass. Unindent a block
that was squeezed too much to the right and make a few minor stylistic
tweaks.
ok jsing
tb [Sat, 16 Dec 2023 14:09:33 +0000 (14:09 +0000)]
Move EVP_PBE_find() next to the tables
There is no point in having EVP_PBE_CipherInit() between the table and
the lookup functions (which it notably uses).
No code change.
tb [Sat, 16 Dec 2023 14:04:59 +0000 (14:04 +0000)]
Remove OBJ_bsearch_() usage from PBE
Split the table of built-in password based encryption algorithms into two
and use a linear scan over the table corresponding to the type specified
in EVP_PBE_find()'s type argument. Use better variable names, make the
API a bit safer and generally reduce the eye bleed in here.
ok jsing
tb [Sat, 16 Dec 2023 13:23:20 +0000 (13:23 +0000)]
Using two different spellings of NULL in the same line is an achievement
tb [Sat, 16 Dec 2023 12:56:20 +0000 (12:56 +0000)]
Annotate incorrect value for ub_email_address
The ub_email_address upper bound, 128, returned for NID_pkcs9_emailAddress,
doesn't match the PKCS#9 specification where it is 255. This was adjusted
in RFC 5280:
The ASN.1 modules in Appendix A are unchanged from RFC 3280, except
that ub-emailaddress-length was changed from 128 to 255 in order to
align with PKCS #9 [RFC2985].
Nobody seems to have noticed so far, so leave it at an XXX and a BUGS
entry for now. It also clearly has the wrong name.
Another mystery is why the RFCs suffix some upper bounds with length, but
not others. Also, OpenSSL chose to be inconsistent with that, because
inconsistency is one of the few things this library is really good at.
tb [Sat, 16 Dec 2023 12:40:02 +0000 (12:40 +0000)]
Neuter the ASN1_STRING_TABLE modification API
This is complete nonsense that nothing's ever used except for a test by
schwarze. It will be removed in the next major bump. What remains could
be moved to a simple lookup table in security/xca...
ok jsing
tb [Sat, 16 Dec 2023 12:36:14 +0000 (12:36 +0000)]
Remove call to ASN1_STRING_TABLE_cleanup()
In a few minutes, the string table will no longer have anything to clean
up and ASN1_STRING_TABLE_cleanup() will push an error on the stack. So
remove this pointless call in the still too complicated OPENSSL_cleanup().
ok jsing
tb [Sat, 16 Dec 2023 12:25:02 +0000 (12:25 +0000)]
asn1.h: mark a type and a bunch of macros for removal
ok jsing
tb [Sat, 16 Dec 2023 10:27:06 +0000 (10:27 +0000)]
sync
tb [Sat, 16 Dec 2023 10:26:10 +0000 (10:26 +0000)]
Rename ASN1_STRING_TABLE_add manual to _get
tb [Sat, 16 Dec 2023 10:22:56 +0000 (10:22 +0000)]
Remove ASN1_STRING_TABLE_{add,cleanup}() documentation
The unused ASN1_STRING_TABLE extensibility API will be removed in the next
major bump and the table itself will become immutable. Lightly adjust the
remaining text. In particular, update the RFC reference, stop talking about
defaults when nothing can be changed anymore, do not mention useless flags
that you will no longer be able to set and move the description of the only
remaining flag after the description of ASN1_STRING_TABLE_get().
The file will be renamed in a second step.
tb [Sat, 16 Dec 2023 09:46:06 +0000 (09:46 +0000)]
Implement and use a do_cipher() wrapper
Instead of using five different idioms for eight callers of the do_cipher()
method in EVP_{Decrypt,Encrypt}{Update,Final_ex}(), wrap the API insanity
in an evp_cipher() function that calls do_cipher() as appropriate depending
on the EVP_CIPH_FLAG_CUSTOM_CIPHER being set or not. This wrapper has the
usual OpenSSL calling conventions.
There is one complication in EVP_EncryptUpdate() in the case a previous
call wrote only a partial buffer. In that case, the evp_cipher() call is
made twice and the lengths have to be added. Add overflow checks and only
set outl (the number of bytes written) to out on success.
ok jsing
aoyama [Sat, 16 Dec 2023 06:42:38 +0000 (06:42 +0000)]
Fix phdr name in ld.script.
ok deraadt@
tb [Fri, 15 Dec 2023 22:24:15 +0000 (22:24 +0000)]
Remove the string_table test
If it wasn't for security/xca, all of the ASN1_STRING_TABLE API would
hit the attic before long. API design by a trained professional...
The table can at least be made immutable, which in turn makes this test
entirely pointless.
tb [Fri, 15 Dec 2023 21:55:47 +0000 (21:55 +0000)]
Remove strings.h again
The portable compat shim doesn't provide it.
jca [Fri, 15 Dec 2023 16:59:48 +0000 (16:59 +0000)]
Run non-daemons services in a different process group to avoid SIGHUP at boot
12 factors apps and similar don't daemonize and are thus vulnerable to
receiving a SIGHUP signal at the end of /etc/rc. Shield them by running
them in a different process group. Do this only for services that need
rc_bg=Yes, as suggested by ajacoutot@
There have been several reports about this issue in the past years, the
last one being from edd@ who successfully tested this fix. Input from
several folks, ok sthen@ ajacoutot@
miod [Fri, 15 Dec 2023 15:20:16 +0000 (15:20 +0000)]
Drop no-longer-applicable comment.
deraadt [Fri, 15 Dec 2023 15:12:08 +0000 (15:12 +0000)]
provide the pieces for ktrace/kdump to observe pinsyscall violations.
(not used yet, because the pinsyscall changes are still being worked on)
ok kettenis
tb [Fri, 15 Dec 2023 14:22:10 +0000 (14:22 +0000)]
Remove EVP_PBE_cleanup() from EVP_cleanup()
It's a noop and will be removed in the next major bump.
ok jsing
tb [Fri, 15 Dec 2023 14:21:14 +0000 (14:21 +0000)]
Move all the neutered PBE API to the bottom of the file
tb [Fri, 15 Dec 2023 14:16:44 +0000 (14:16 +0000)]
Remove unprotected global state from EVP_PBE
Nobody adds a custom password-based encryption algorithm, be it a PRF or
one that can be an outermost AlgorithmIdentifier in CMS or its precursors.
This makes the undocumented and unused EVP_PBE_alg_add{,_type}() always
fail. They will be removed in the next major bump.
Thus, we no longer need to maintain a global stack of PBE algorithms that
one thread can happily modify while another one searches it.
In subsequent steps we can then remove another rather pointless use of
OBJ_bsearch_(). "Let's optimize the lookup in a table with two dozen
entries using about as many glorious layers of obfuscating macros."
ok jsing
tb [Fri, 15 Dec 2023 13:48:59 +0000 (13:48 +0000)]
Fix a return value confusion in chacha20_poly1305_cipher()
On overlong input, chacha20_poly1305_cipher() would return 0, which in
EVP_CipherUpdate() and EVP_CipherFinal() signals success with no data
written since EVP_CIPH_FLAG_CUSTOM_CIPHER is set. In order to signal an
error, we need to return -1. Obviously.
ok jsing
tb [Fri, 15 Dec 2023 13:45:05 +0000 (13:45 +0000)]
Disallow ciphers with EVP_CIPH_FLAG_CUSTOM_CIPHER in CMAC
These are usually AEAD ciphers, for which CMAC makes little sense (if you
need a MAC and all you have is an AEAD, you don't need CMAC, you can just
use a zero length cipher text). Also, since the CMAC implementation only
allows 64 and 128 bit block sizes, the AEADs would error out later anyway.
The only family of ciphers this effectively excludes is AES key wrap, for
which CMAC makes little sense.
One notable side effect of doing this is that the EVP_Cipher() return
value checks in the CMAC code magically become correct. EVP. What's not to
love about it.
ok jsing
tb [Fri, 15 Dec 2023 13:33:10 +0000 (13:33 +0000)]
Document EVP_Cipher() in code
EVP_Cipher() is an implementation detail of EVP_Cipher{Update,Final}().
Behavior depends on EVP_CIPH_FLAG_CUSTOM_CIPHER being set on ctx->cipher.
If the flag is set, do_cipher() operates in update mode if in != NULL and
in final mode if in == NULL. It returns the number of bytes written to out
(which may be 0) or -1 on error.
If the flag is not set, do_cipher() assumes properly aligned data and that
padding is handled correctly by the caller. Most do_cipher() methods will
silently produce garbage and succeed. Returns 1 on success, 0 on error.
ok jsing
tb [Fri, 15 Dec 2023 13:28:30 +0000 (13:28 +0000)]
Move EVP_Cipher() from evp_lib.c to evp_enc.c
EVP_Cipher() is a dangerous thin wrapper of the do_cipher() method set on
the EVP_CIPHER_CTX's cipher. It implements (part of) the update and final
step of the EVP_Cipher* API. Its behavior is nuts and will be documented
in a comment in a subsequent commit. schwarze has a manpage diff that will
fix the incorrect documentation.
kn [Fri, 15 Dec 2023 10:28:57 +0000 (10:28 +0000)]
No interactive shell if -o is given
After r1.140 and r1.144 fixed -o '' and clenaed up option handling,
respectively, avoid the "ftp> " shell if any output file was specified.
OK millert
miod [Fri, 15 Dec 2023 10:17:40 +0000 (10:17 +0000)]
Sync limits with octeon.
tb [Fri, 15 Dec 2023 08:22:08 +0000 (08:22 +0000)]
Clean up includes
tb [Fri, 15 Dec 2023 08:16:54 +0000 (08:16 +0000)]
Neuter EVP_PKEY_asn1_add{0,_alias}()
Nothing uses these, so they will be removed in the next bump. For now
make them always fail and remove the unprotected global state backing
them. This makes EVP_PKEY_asn1_get{0,_count}() completely trivial and
will allow some further cleanup in later steps.
ok jsing
jmatthew [Fri, 15 Dec 2023 06:03:00 +0000 (06:03 +0000)]
For amd64 cdXX.iso and installXX.iso, create an EFI system partition image
containing the EFI boot loaders and install it as an El Torito boot image,
making the install CDs bootable in EFI mode.
"looks great" deraadt@
ok mlarkin@
tb [Fri, 15 Dec 2023 01:51:23 +0000 (01:51 +0000)]
Hoist OBJ_sn2nid() over OBJ_ln2nid()
In all other places, the short name comes before the long name, so fix
the only exception.
tb [Fri, 15 Dec 2023 01:47:50 +0000 (01:47 +0000)]
Coverity rightly points out that an unsigned int is always >= 0
bluhm [Fri, 15 Dec 2023 00:24:56 +0000 (00:24 +0000)]
Use inpcb table mutex to set addresses.
Protect all remaining write access to inp_faddr and inp_laddr with
inpcb table mutex. Document inpcb locking for foreign and local
address and port and routing table id. Reading will be made MP
safe by adding per socket rw-locks in a next step.
OK sashan@ mvs@
tb [Thu, 14 Dec 2023 18:32:49 +0000 (18:32 +0000)]
OBJ_create: sorry Omar, aobj is a better name than op
Done.
tb [Thu, 14 Dec 2023 18:31:03 +0000 (18:31 +0000)]
OBJ_create: use a nid variable to avoid nested function call
tb [Thu, 14 Dec 2023 18:16:13 +0000 (18:16 +0000)]
OBJ_create: malloc() -> calloc()
tb [Thu, 14 Dec 2023 18:15:21 +0000 (18:15 +0000)]
OBJ_create: test and assign as usual
tb [Thu, 14 Dec 2023 18:12:51 +0000 (18:12 +0000)]
OBJ_create: initialize buf and turn function into single exit
tb [Thu, 14 Dec 2023 18:10:32 +0000 (18:10 +0000)]
OBJ_create: rename ok to ret and make it last declaration
tb [Thu, 14 Dec 2023 18:09:35 +0000 (18:09 +0000)]
OBJ_create(): rename i to len
tb [Thu, 14 Dec 2023 18:08:18 +0000 (18:08 +0000)]
OBJ_create(): remove pointless parentheses
tb [Thu, 14 Dec 2023 18:06:44 +0000 (18:06 +0000)]
OBJ_create(): remove useless cast
tb [Thu, 14 Dec 2023 15:33:09 +0000 (15:33 +0000)]
OPENSSL_assert() that the passed nid is within range
discussed with deraadt and jsing
tb [Thu, 14 Dec 2023 15:31:22 +0000 (15:31 +0000)]
Bump OPENSSL_showfatal() from LOG_INFO to LOG_CONS
This way people can actually notice that an OPENSSL_assert() triggered.
discussed with deraadt and jsing
tb [Thu, 14 Dec 2023 14:45:45 +0000 (14:45 +0000)]
Move the txt to obj/nid conversions a bit down.
No code change
tb [Thu, 14 Dec 2023 14:33:23 +0000 (14:33 +0000)]
Dedup OBJ_nid2{obj,sn,ln}()
First get the obj corresponding to nid, then inspect its sn and ln.
Shaves off 40 lines of code and will simplify locking.
claudio [Thu, 14 Dec 2023 14:04:57 +0000 (14:04 +0000)]
Workaround for broken clang which has a broken -fno-zero-initialized-in-bss
implementation.
Set nkmempages to -1 by default instead of 0 so that the value ends up in
the data section. This way config(8) is able to alter the value as promised.
See also: https://github.com/llvm/llvm-project/issues/74632
OK miod@
tb [Thu, 14 Dec 2023 14:04:46 +0000 (14:04 +0000)]
Simplify OBJ_nid2obj()
This is now yet another identical copy of the same code...
Next step will be to dedup.
ok jsing
tb [Thu, 14 Dec 2023 14:02:57 +0000 (14:02 +0000)]
Simplify OBJ_nid2sn()
This is exactly the same as the previous OBJ_nid2ln() change modulo
s/ln/sn/g.
ok jsing
tb [Thu, 14 Dec 2023 14:01:42 +0000 (14:01 +0000)]
Simplify OBJ_nid2ln()
If nid is in the range of built-in NIDs, return the corresponding
long name, unless some genius left a hole. Otherwise perform a yolo
check if there are any user-added objects with matching nid in the
global hash.
This changes behavior in that we now push an OBJ_R_UNKNOWN_NID error
onto the stack even if there are no user-added objects.
ok jsing
claudio [Thu, 14 Dec 2023 13:52:37 +0000 (13:52 +0000)]
Mostly straightforward conversion to imsg_get_fd() only the handling
of the control socket needs a local variable since imsg_get_fd() can
only be called once on an imsg.
OK tb@
claudio [Thu, 14 Dec 2023 13:34:23 +0000 (13:34 +0000)]
There is no more option NKMEMPAGES_MAX
OK miod@
claudio [Thu, 14 Dec 2023 13:26:49 +0000 (13:26 +0000)]
NKMEMPAGES_MAX_DEFAULT is no longer used. Remove it from param.h.
OK miod@
job [Thu, 14 Dec 2023 12:26:03 +0000 (12:26 +0000)]
Constrain the AFRINIC TA further
Today AFRINIC clarified its actual current resource holdings by issuing
a new CA certificate in response to a report on overclaiming:
https://lists.afrinic.net/pipermail/dbwg/2023-December/000496.html
OK tb@
tb [Thu, 14 Dec 2023 12:02:10 +0000 (12:02 +0000)]
Fix sk_deep_copy() implementation
sk_deep_copy() is bad code. It is less bad than the upstream code, but
still bad: it passes strdup() through a void pointer and assigns it to
a function pointer of different type before calling the latter. That's
not kosher in more than one way.
There is no need for such gymnastics. If we need a deep copy for a type,
we should implement it as appropriate for that type.
Also, we should not expect and even less so allow holes in a STACK_OF().
The only way the vpm->hosts can be populated is by way of this deep_copy
function or x509_param_set_hosts_internal(), which pushes only after a
non-NULL check. Invariants: they're useful.
ok jsing
claudio [Thu, 14 Dec 2023 11:58:09 +0000 (11:58 +0000)]
Bring default logic to set nkmempages into the 21st century.
The new logic is:
Up to 1G physmem use physical memory / 4,
above 1G add an extra 16MB per 1G of memory.
Clamp it down depending on available kernel virtual address space
- up and including 512M -> 64MB (macppc, arm, sh)
- between 512M and 1024M -> 128MB (hppa, i386, mips, luna88k)
- over 1024M clamping to VM_KERNEL_SPACE_SIZE / 4
The result is much more malloc(9) space on 64bit archs with lots of memory
and large kva space.
Note: amd64 only has 4G of kva and therefor nkmempages is limited to 262144
As a side-effect NKMEMPAGES_MAX and nkmempages_max are no longer used.
Tested and OK miod@
claudio [Thu, 14 Dec 2023 11:10:19 +0000 (11:10 +0000)]
Use imsg_get_fd() to access the file descriptor passed in the imsg.
OK tb@