jcs
/subtext
/amendments
Amendments on July 13, 2022
sysop: Write new config but don't apply it on the fly
There are things in the idle loop that check for config settings and
we can't assume they were there at startup
jcs made amendment
202
about 1 year ago
Amendments on July 14, 2022
jcs made amendment
203
about 1 year ago
telnet: When banning an IP, optionally send it via UDP to trusted proxy
If the new trusted_proxy_udp_port config option is set, send a UDP
packet containing the IP to the trusted_proxy_ip host so it can ban
it more aggressively.
Amendments on July 15, 2022
bile: Fix bogus free in bile_sorted_ids_by_type
ids was not being initialized to NULL, so when passed to EXPAND_TO_FIT,
realloc is doing a free of some junk pointer before malloc'ing a new
one.
board: Don't pre-alloc a bunch of ids in board_find_post_ids
If we return early or we return no ids, we shouldn't have a dangling
malloc(sizeof(long) * 16) that the caller might not know to free
since the count returned will be 0.
jcs made amendment
207
about 1 year ago
chat: Use session_output instead of printf when printing a bar
These can be big and trigger an overflow panic in the printf buffer
Amendments on July 16, 2022
*: Move some big char buffers from the stack to the heap
Use FILENAME_MAX in place of 256 where appropriate.
session+chat: Remove session_bar, implement simpler bar in chat
This is only used in chat and only to print a left-aligned bar.
*: Properly handle running out of sessions
Limit sessions to the number of uthreads we can handle, and then
reserve 1 session for the console.
In telnet, allocate one extra node so we can print a message to the
client that we have no free nodes, and then disconnect. Add a view
for this to make it editable.
In console, handle getting a null session back from session_create.
serial: If session_create fails, hang up
Maybe we should not put the modem in auto-answer and require manual
ATA, but then only do that if we can establish a session first. That
way we don't waste time negotiating the modem just to hang up.
board: Put the message index in the prompt, not the message id
It can be confusing when a user hits '1' to view the message in the
list showing "1 ..." but the prompt ends up showing "Boards:blah:4".
jcs made amendment
214
about 1 year ago
Amendments on July 17, 2022
jcs made amendment
215
about 1 year ago
telnet: Remove local banning, just use UDP sending to trusted proxy
Since we can't reject connections from banned IPs before opening the
TCP connection and we can get the trusted proxy to block IPs with
UDP messages, just rip local banning out of here.
Amendments on July 19, 2022
bile: Fix unmarshalling of a dynamic field with zero length
Don't xmalloc(0), just set it to a NULL pointer.
*: Add session signoff view, remove session_output_template
All remaining uses of session_output_template can use session_printf
which still does {{B}} and {{/B}} parsing.
Change session_output_view to session_output_view_or_printf to make it
easier to print a view and fallback to a string, rather than having to
check the result of session_output_view everywhere.
Amendments on July 21, 2022
jcs made amendment
219
about 1 year ago
*: Use NewPtr instead of malloc, add malloc and free debugging
Instead of free(ptr), use xfree(&ptr) and after it calls
DisposePtr(ptr), it will update ptr to point at NULL to catch
use-after-frees.
When MALLOC_DEBUG is defined, each allocation is added to a
list, and removed when freed. If it's not in the list at free
time, it's a double-free. Also, instead of pointing pointers at
NULL, point them to a pre-defined block of zeroes and in the
idle loop, periodically check that this block is still zero. This
will also catch use-after-frees in a more reliable (but costly)
way.