1 Commits
Author SHA1 Message Date
Juan DenisandClaude Fable 5 452a2d43ae fix(php): guard pool paths and stop fabricating unreadable pool configs
version and pool_name flow from the URL straight into a filesystem path
handed to privileged write/rm — a traversal pool_name could delete an
arbitrary *.conf via run_privileged(['rm', ...]), and a hostile version
escaped the pool.d directory the same way. Both are now validated at
the service door (create/delete/get share the helpers).

_parse_pool_config returned {} on any read error, so an unreadable
pool listed as "user: www-data, pm: dynamic" — fabricated defaults.
It now returns None and the listing reports the honest unknown
(user/listen/pm null + unreadable: true), per the probe-honesty rule.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-27 04:56:12 -04:00