rakshasa
f6ea7b326f
Merge branch 'master' into silasmariusz-exec-arg-buffer
2026-10-04 09:35:41 +02:00
Silas Mariusz
4492474f7e
Use heap allocated buffer for rpc::ExecFile::execute_object() and increase size to 128Kb.
2026-10-04 09:34:42 +02:00
rakshasa
3af0410a6e
Restrict parse value to strtoll with restrictions on input.
2026-10-01 10:32:43 +02:00
rakshasa
3c94b03323
Restrict parse value to strtoll with restrictions on input.
2026-10-01 10:32:43 +02:00
rakshasa
c5d54fbb97
Restrict parse value to strtoll with restrictions on input.
2026-10-01 10:32:43 +02:00
noctuum
8bcc4c6e92
Read the unpacked object in the raw string case
...
A list holding one raw string reached this case and threw on `src`.
2026-09-29 10:00:30 +02:00
noctuum
d5ce0984fc
Reset the freed pointers in XmlRpc::cleanup
...
`is_valid()` tests `m_env`, so it stayed true after `cleanup()`.
2026-09-28 18:01:05 +02:00
noctuum
a89ce3cd7b
Check first against last in parse_object
...
A command ending in `=` reaches it with an empty range.
2026-09-28 17:34:06 +02:00
noctuum
8e23ba8b17
Reject an empty argument list in execute_lua
...
`lua.execute` with no arguments dereferenced `args.begin()`.
2026-09-28 11:36:53 +02:00
xirvik
019c16a077
rpc: multicall requires methodName as the struct's first member
...
Faults clearly instead of the confusing positional parse error it replaces.
2026-09-24 09:20:25 +02:00
xirvik
439d23ce62
Bound JSON-RPC input by size and nesting depth
...
Enforce the nesting bound in one parse, capping allocation by depth, not input size.
2026-09-23 09:25:25 +02:00
xirvik
d1a6942ea7
Keep the object_storage key terminator inside the key buffer
...
find_raw_string now honours the raw_string size instead of scanning for a nul.
2026-09-21 09:22:26 +02:00
xirvik
8ee3b984dd
Give network.xmlrpc.size_limit.set a floor
...
A limit below any valid request rejects the request that would raise it again.
2026-09-20 09:23:12 +02:00
xirvik
80ae6a4590
Answer an oversized RPC response with a fault
...
Cap XML-RPC and JSON-RPC output at the SCGI response limit before handing it over.
2026-09-19 18:04:09 +02:00
noctuum
84a0d86f2c
Own the fault string in xmlrpc_error_c
...
xmlrpc_env_set_fault frees the buffer the pointer came from.
2026-09-19 10:34:46 +02:00
noctuum
b1be898ba1
Reject an over-long or empty object_storage key
...
key_type stores a key of key_size or longer as the empty key.
2026-09-18 16:54:48 +02:00
noctuum
988aca1281
Release the scgi task buffer on close
...
clear() keeps the capacity, and the task is pooled until exit.
2026-09-18 10:53:58 +02:00
noctuum
c1ce2febf0
Reject an over-long line instead of truncating
...
getline sets failbit, which both loops read as end of input.
2026-09-17 11:33:44 +02:00
noctuum
5ebb7bd151
Call the target deleter in the tinyxml2 backend
...
A tracker target allocates, and the deleter went out of scope unused.
2026-09-17 10:33:45 +02:00
noctuum
50f0cad0c6
Release the xmlrpc array item on a throw
...
xmlrpc_to_target throws for an invalid target, skipping the DECREF.
2026-09-17 10:14:21 +02:00
noctuum
c32b56e9d8
Do not reschedule a deleted scheduler item
...
schedule.remove from the scheduled command deletes the item.
2026-09-16 11:37:19 +02:00
noctuum
282c86597a
Fix a use after free in the xmlrpc-c index path
...
The string was freed before it was tested, and tmp was never released.
2026-09-14 11:32:11 +02:00
rakshasa
3caa31113d
Bumped scgi max content length to 64mb.
2026-09-06 14:50:19 +02:00
xirvik
16bfaf2694
Reject an XMLRPC size limit above the SCGI content size limit.
2026-08-27 10:48:26 +02:00
xirvik
ac1b2685d5
Guard the value suffixes against negative overflow.
...
The k, m and g guards only checked the positive side, so -4611686018427387904K became 0.
2026-08-24 08:57:58 +02:00
xirvik
3ae91b6536
Check flag_public_rpc when dispatching jsonrpc calls.
...
Private commands and non-exported redirects were reachable over jsonrpc.
2026-08-19 19:11:53 +02:00
xirvik
af6d8a10ad
Add a timeout to scgi tasks.
...
A hundred connections sending a partial header held the whole task pool.
2026-08-18 12:25:58 +02:00
xirvik
9066afc063
Guard the unit multiplication in value commands against overflow.
...
The kb variants multiply the argument by 1024 without checking the range.
2026-08-18 11:58:47 +02:00
xirvik
d73f245692
Add a depth limit to the command parser.
...
A million nested braces in one argument exhausted the main thread's stack.
2026-08-18 10:52:38 +02:00
xirvik
7db356cae4
Add a depth limit to json_to_object.
...
Deeply nested params recursed until the main thread's stack was exhausted.
2026-08-18 10:34:07 +02:00
xirvik
385e149ccc
Let the download list own its downloads through a shared pointer.
...
A multicall could then dispatch commands on an erased download.
2026-08-17 10:40:41 +02:00
xirvik
b24db0eaa5
Do not dereference missing text nodes in the tinyxml2 backend.
...
Empty elements and element children crashed the parser on a null.
2026-08-14 13:16:17 +02:00
xirvik
a075001a73
Catch every json exception when processing a JSONRPC request.
...
A number overflow escaped the two handlers and killed the process.
2026-08-12 18:22:17 +02:00
xirvik
781520fef8
Close the connection when an SCGI header does not fit the buffer.
...
A malformed header aborted the process from the SCGI thread.
2026-08-12 15:48:39 +02:00
xirvik
87db1cf0f0
rpc: do not dereference a null result from the xmlrpc-c registry.
...
A failed call returns null, which was passed straight to xmlrpc_mem_block_contents.
2026-08-07 10:56:19 +02:00
Jari Sundell
f90a96d57a
Added WaitpidQueue to handle background process reaping.
2026-08-04 19:03:26 +09:00
Jari Sundell
f52f20f1b6
Cleaned up system headers.
2026-07-26 19:53:18 +09:00
Jari Sundell
f6b3ad0efd
Minor cleanup of pex and other commands.
2026-07-15 19:40:13 +09:00
Jari Sundell
959448acda
Fixed command_base t_pod align static asserts.
2026-07-08 17:15:56 +09:00
Jari Sundell
3b6da6feac
Reordered http queue slots to avoid race conditions.
2026-07-07 16:34:19 +09:00
Jari Sundell
ea2d22cb87
Removed unused add/remove error-event code.
2026-07-07 03:05:20 +09:00
Jari Sundell
a07f57a703
Fixed fd close order in ExecFile.
2026-07-06 18:06:51 +09:00
fffe
9884c9dd9b
Add support for posix_spawn_file_actions_addclosefrom_np by @fffe
2026-07-03 20:52:26 +09:00
Jari Sundell
786f1234d2
Fix background task execution.
2026-07-03 17:53:00 +09:00
Jari Sundell
23921cc97c
Added new ProxyManager and support for socks5 for peer connections.
2026-06-30 19:55:45 +09:00
Jari Sundell
acb02379b8
Use a cache for free diskspace when sync'ing all downloads.
2026-06-18 23:45:55 +09:00
trim21
bf74686c29
fix: replace reinterpret_cast UB in command_base with aligned placement new
...
Replace the union-based reinterpret_cast type erasure in command_base
with an alignas char buffer + typed copy/destroy helper pointers.
set_function<T>() placement-news the correct std::function<T> type
at the buffer address, and stores per-type copy/destroy helpers so
that the copy ctor, assignment, and destructor always operate on the
actual type rather than assuming base_function.
_reinterpret_cast<T&> access of t_pod remains zero-overhead and is
now well-defined because the object was constructed at that address
as T via placement new.
Fixes #1818
2026-06-18 11:05:58 +02:00
Jari Sundell
dbe7997131
Use posix_spawn for execute commands.
2026-06-18 01:01:52 +09:00
Jari Sundell
d595ebf7d8
Renamed scgi socket manager category to rpc.
2026-06-17 03:43:26 +09:00
trim21
19305ab662
fix: define LUA_OK for Lua 5.1 and LuaJIT compatibility
...
LUA_OK was introduced in Lua 5.2. Define it as 0 for compatibility
with Lua 5.1 and LuaJIT (which is based on Lua 5.1).
2026-06-12 09:59:42 +02:00