Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
df0dd87
refactor(module): thread private gid through directory refusal check
senamakel Oct 9, 2026
639a7de
chore(tinybus): add host module tests
senamakel Oct 9, 2026
4073b32
chore: I don't see a diff in your message — the "Diff:" section is em…
senamakel Oct 9, 2026
494854d
chore: files changed crates/tinybus/Cargo.toml
senamakel Oct 9, 2026
3749f41
feat(module): admit group write by the user's private group
senamakel Oct 9, 2026
18019af
chore(deps): add libc to the lockfile
senamakel Oct 9, 2026
cb6d31b
chore(tinybus): add host module tests
senamakel Oct 9, 2026
4876162
fix(error): correct doc comment for Error::Io
senamakel Oct 9, 2026
722f007
test(tinybus): simplify ancestor and buffer test setup
senamakel Oct 9, 2026
9a015b3
test(module): reformat ancestor label assertion
senamakel Oct 9, 2026
b7271ea
test(module): add host admission tests
senamakel Oct 9, 2026
59f4bc6
docs(module): document unix ownership and refusal details
senamakel Oct 9, 2026
428f11c
chore: I don't see a diff in your message — the "Diff:" section is em…
senamakel Oct 9, 2026
7761713
chore(module): remove unused host module
senamakel Oct 9, 2026
a0f170d
fix(module): restore host module registration on startup
senamakel Oct 9, 2026
835d42d
Merge remote-tracking branch 'origin/main' into sentry-top-bugs
senamakel Oct 9, 2026
3f892af
chore: files changed crates/tinybus/src/module/host.rs,crates/tinybus…
senamakel Oct 10, 2026
79d3df1
fix(module): treat passwd enumeration errors as incomplete and redact…
senamakel Oct 10, 2026
47fb41c
refactor(module): extract host module into its own file
senamakel Oct 10, 2026
c2014ed
refactor(module): rework host permission tests around pure helpers
senamakel Oct 10, 2026
cc50fe3
test(module): remove reentrant lookup buffer growth test
senamakel Oct 10, 2026
87374f8
fix(module): decide private groups from local account files and ACL-f…
senamakel Oct 10, 2026
f96e4b5
fix(module): do not treat nsswitch compat as local accounts
senamakel Oct 10, 2026
c9315f6
chore: files changed crates/tinybus/src/module/host.rs
senamakel Oct 10, 2026
0a27710
fix(module): keep the private group closed while systemd user records…
senamakel Oct 10, 2026
383beee
fix(module): fail closed on malformed account records and systemd use…
senamakel Oct 10, 2026
74d0ce5
docs(module): private-group admission is Linux-only
senamakel Oct 10, 2026
0133ac7
fix(module): reject unreadable group records in private group check
senamakel Oct 10, 2026
cd4c0ec
fix(module): treat initgroups and subordinate gid ranges as non-private
senamakel Oct 10, 2026
1a570ee
fix(module): reject duplicate account names and non-local subid provi…
senamakel Oct 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion crates/tinybus/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ zip = { version = "2", optional = true, default-features = false, features = ["d
tempfile = { version = "3", optional = true }
toml = { version = "1", optional = true }

# Unix only, for the module directory gate's passwd/group lookups
# (`getpwuid_r`, `getgrgid_r`), whose struct layouts differ per platform.
[target.'cfg(unix)'.dependencies]
libc = { version = "0.2", optional = true }

[features]
# `uds` and `macros` are on by default because a bus you cannot connect to over
# a socket, and an interface you have to hand-dispatch, are not what anyone is
Expand Down Expand Up @@ -69,7 +74,7 @@ cli = [

# Load trusted, in-process cdylib modules. Off by default because a loaded
# module shares the host's address space and full privileges.
modules = ["dep:ureq", "dep:flate2", "dep:tar", "dep:zip", "dep:tempfile", "dep:toml"]
modules = ["dep:ureq", "dep:flate2", "dep:tar", "dep:zip", "dep:tempfile", "dep:toml", "dep:libc"]


[dev-dependencies]
Expand Down
6 changes: 4 additions & 2 deletions crates/tinybus/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -210,8 +210,10 @@ pub enum Error {

/// A dynamic module failed a fixed admission rule.
///
/// `file` is a basename only and `reason` is selected by the host. Neither
/// field may contain a path or attacker-controlled descriptor bytes.
/// `file` is a basename only and `reason` is selected by the host; a unix
Comment thread
senamakel marked this conversation as resolved.
/// directory refusal ends by naming the one ancestor component that
/// failed. Neither field may contain a full path or attacker-controlled
/// descriptor bytes.
#[error("module `{file}` refused: {reason}")]
ModuleRefused {
/// Sanitized artifact basename.
Expand Down
Loading
Loading