summaryrefslogtreecommitdiff
path: root/gui/draw
diff options
context:
space:
mode:
authorCalvin Morrison <calvin@pobox.com>2026-08-18 21:07:59 -0400
committerCalvin Morrison <calvin@pobox.com>2026-08-18 21:07:59 -0400
commit24ae4160d6b82aa409ec8f2a80d4b59166c19972 (patch)
tree8d2ec4fc153009af826044b35b1f2e96e31f71d9 /gui/draw
parentd16dfe7d8773f71641f272c588218d0c6cb940ee (diff)
ether: keep the frame buffer off the proc stack, and log the v6 drop
Maxframe was Ehdrlen + 16K, an automatic in etherwriteip, which runs on a proc created with a 32K stack. It fits, and the previous fix was right that 64K did not, but half a stack for a buffer that -- since the pkt interface is now told "mtu 1500" -- can never hold more than 1514 bytes is a number waiting to be wrong again, and libthread allocates that stack with malloc, so being wrong means quietly corrupting the heap rather than faulting. So the buffer belongs to the caller, with its size, and the guard is against that size. etherout allocates it once, from the same Maxpkt it sizes its read buffer with, which is the only place that knows how much can arrive. ether.c no longer has a length of its own to drift. The IPv6 message now also goes to syslog. fw daemonizes, so a message on file descriptor 2 goes wherever the shell that started it was pointing, which for a firewall started at boot is nowhere. No test. etherwriteip is reached only in card mode, which the suite stays out of on purpose because a test that can leave the machine with no network is a test nobody runs. A unit harness for ether.c -- point efd at a pipe, call etherwriteip, read the frame back -- would cover this and the broadcast mapping that todo.md still records as written but never observed. Worth doing; not done here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'gui/draw')
0 files changed, 0 insertions, 0 deletions