aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin/tpd.rs
diff options
context:
space:
mode:
authormurilo ijanc2026-03-25 15:41:40 -0300
committermurilo ijanc2026-03-25 15:49:08 -0300
commit290f53c38cdacd502eb6dda52f2ad207063e3973 (patch)
treec5cd20f1fdc56b1d2420f12c674700ca1db396c0 /src/bin/tpd.rs
parent62b68cc461b5e298add3ab190fe9a38f3efefe7a (diff)
downloadtesseras-paste-290f53c38cdacd502eb6dda52f2ad207063e3973.tar.gz
Limit stdin read in tp, bound protocol drain, document Arc leak
- tp: limit stdin to 64 KiB + 1 byte to reject oversized pastes early without unbounded memory allocation - daemon: bound the oversized-line drain to MAX_LINE_SIZE so a client without newlines cannot block beyond the read timeout - tpd: document intentional Arc::into_raw leak in signal handler
Diffstat (limited to 'src/bin/tpd.rs')
-rw-r--r--src/bin/tpd.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/bin/tpd.rs b/src/bin/tpd.rs
index a1edf79..e1ebc7b 100644
--- a/src/bin/tpd.rs
+++ b/src/bin/tpd.rs
@@ -256,7 +256,9 @@ fn main() {
let shutdown = Arc::new(AtomicBool::new(false));
- // Signal handler
+ // Signal handler — Arc::into_raw intentionally leaks the
+ // refcount so the pointer remains valid for the process
+ // lifetime. No matching Arc::from_raw needed.
let sig = Arc::clone(&shutdown);
unsafe {
SHUTDOWN_PTR.store(