Skip to content

Add conversion helpers between BandwidthLimit and shared components#1195

Merged
oferchen merged 1 commit into
masterfrom
implement-missing-components-for-oc-rsync
Oct 27, 2025
Merged

Add conversion helpers between BandwidthLimit and shared components#1195
oferchen merged 1 commit into
masterfrom
implement-missing-components-for-oc-rsync

Conversation

@oferchen
Copy link
Copy Markdown
Owner

Summary

  • add helpers on BandwidthLimit to expose the shared BandwidthLimitComponents representation
  • implement From conversions between BandwidthLimit and BandwidthLimitComponents
  • extend unit tests to cover the new conversions

Testing

  • cargo test -q

https://chatgpt.com/codex/tasks/task_e_68febf063d108323baba438398c825ad

@oferchen oferchen merged commit 7b2aa2f into master Oct 27, 2025
@oferchen oferchen deleted the implement-missing-components-for-oc-rsync branch October 27, 2025 00:49
oferchen added a commit that referenced this pull request May 14, 2026
Set up a cargo-fuzz scaffold at the repository root so contributors and
CI can fuzz the multiplex frame parser - the highest-level entry point
that consumes untrusted bytes from network peers. Coverage-guided
exploration will fan out across header validation, payload-length
checks, and message-code decoding without needing per-path harnesses.

The fuzz crate is excluded from the root workspace so libfuzzer-sys
does not leak into ordinary `cargo build` runs.

Refs #1195 #1291 #1293 #1304 #2103
oferchen added a commit that referenced this pull request May 16, 2026
Add a curated corpus of malformed, truncated, and edge-case byte streams
that exercise the multiplex reader, legacy `@RSYNCD:` handshake parser,
varint and fixed-int decoders, delta token decoder, file-list name
decoder, and filter-rule wire decoder. Each entry carries an inline
comment describing the regression it would catch, and three runners
assert documented outcomes: clean parse, specific error kind, or no
panic under `catch_unwind`.

Designed as the static regression seed for live interop fuzzing (#1196).
The corpus is extensible: new adversarial inputs are added by appending
to the relevant static array.
oferchen added a commit that referenced this pull request May 16, 2026
Add a curated corpus of malformed, truncated, and edge-case byte streams
that exercise the multiplex reader, legacy `@RSYNCD:` handshake parser,
varint and fixed-int decoders, delta token decoder, file-list name
decoder, and filter-rule wire decoder. Each entry carries an inline
comment describing the regression it would catch, and three runners
assert documented outcomes: clean parse, specific error kind, or no
panic under `catch_unwind`.

Designed as the static regression seed for live interop fuzzing (#1196).
The corpus is extensible: new adversarial inputs are added by appending
to the relevant static array.
oferchen added a commit that referenced this pull request May 16, 2026
Add a curated corpus of malformed, truncated, and edge-case byte streams
that exercise the multiplex reader, legacy `@RSYNCD:` handshake parser,
varint and fixed-int decoders, delta token decoder, file-list name
decoder, and filter-rule wire decoder. Each entry carries an inline
comment describing the regression it would catch, and three runners
assert documented outcomes: clean parse, specific error kind, or no
panic under `catch_unwind`.

Designed as the static regression seed for live interop fuzzing (#1196).
The corpus is extensible: new adversarial inputs are added by appending
to the relevant static array.
oferchen added a commit that referenced this pull request May 16, 2026
Add a curated corpus of malformed, truncated, and edge-case byte streams
that exercise the multiplex reader, legacy `@RSYNCD:` handshake parser,
varint and fixed-int decoders, delta token decoder, file-list name
decoder, and filter-rule wire decoder. Each entry carries an inline
comment describing the regression it would catch, and three runners
assert documented outcomes: clean parse, specific error kind, or no
panic under `catch_unwind`.

Designed as the static regression seed for live interop fuzzing (#1196).
The corpus is extensible: new adversarial inputs are added by appending
to the relevant static array.
oferchen added a commit that referenced this pull request May 16, 2026
Add a curated corpus of malformed, truncated, and edge-case byte streams
that exercise the multiplex reader, legacy `@RSYNCD:` handshake parser,
varint and fixed-int decoders, delta token decoder, file-list name
decoder, and filter-rule wire decoder. Each entry carries an inline
comment describing the regression it would catch, and three runners
assert documented outcomes: clean parse, specific error kind, or no
panic under `catch_unwind`.

Designed as the static regression seed for live interop fuzzing (#1196).
The corpus is extensible: new adversarial inputs are added by appending
to the relevant static array.
oferchen added a commit that referenced this pull request May 16, 2026
… (#4181)

* test(protocol): adversarial stream corpus for parser robustness (#1195)

Add a curated corpus of malformed, truncated, and edge-case byte streams
that exercise the multiplex reader, legacy `@RSYNCD:` handshake parser,
varint and fixed-int decoders, delta token decoder, file-list name
decoder, and filter-rule wire decoder. Each entry carries an inline
comment describing the regression it would catch, and three runners
assert documented outcomes: clean parse, specific error kind, or no
panic under `catch_unwind`.

Designed as the static regression seed for live interop fuzzing (#1196).
The corpus is extensible: new adversarial inputs are added by appending
to the relevant static array.

* style(protocol): apply rustfmt to adversarial_stream_corpus

* fix(protocol): move cursor inside catch_unwind closure for UnwindSafe

* test(protocol): add corpus entries that exercise NoPanic and Ok outcomes

Adds one MULTIPLEX_CASES entry tagged Outcome::NoPanic (arbitrary bytes
that must not crash the reader) and one LEGACY_GREETING_CASES entry
tagged GreetingOutcome::Ok (canonical \@rsyncd: 32.0 line).
Removes the dead_code warning the unused variants triggered without
silencing the lint.
oferchen added a commit that referenced this pull request May 18, 2026
Set up a cargo-fuzz scaffold at the repository root so contributors and
CI can fuzz the multiplex frame parser - the highest-level entry point
that consumes untrusted bytes from network peers. Coverage-guided
exploration will fan out across header validation, payload-length
checks, and message-code decoding without needing per-path harnesses.

The fuzz crate is excluded from the root workspace so libfuzzer-sys
does not leak into ordinary `cargo build` runs.

Refs #1195 #1291 #1293 #1304 #2103
oferchen added a commit that referenced this pull request May 18, 2026
… (#4181)

* test(protocol): adversarial stream corpus for parser robustness (#1195)

Add a curated corpus of malformed, truncated, and edge-case byte streams
that exercise the multiplex reader, legacy `@RSYNCD:` handshake parser,
varint and fixed-int decoders, delta token decoder, file-list name
decoder, and filter-rule wire decoder. Each entry carries an inline
comment describing the regression it would catch, and three runners
assert documented outcomes: clean parse, specific error kind, or no
panic under `catch_unwind`.

Designed as the static regression seed for live interop fuzzing (#1196).
The corpus is extensible: new adversarial inputs are added by appending
to the relevant static array.

* style(protocol): apply rustfmt to adversarial_stream_corpus

* fix(protocol): move cursor inside catch_unwind closure for UnwindSafe

* test(protocol): add corpus entries that exercise NoPanic and Ok outcomes

Adds one MULTIPLEX_CASES entry tagged Outcome::NoPanic (arbitrary bytes
that must not crash the reader) and one LEGACY_GREETING_CASES entry
tagged GreetingOutcome::Ok (canonical \@rsyncd: 32.0 line).
Removes the dead_code warning the unused variants triggered without
silencing the lint.
oferchen added a commit that referenced this pull request May 18, 2026
Set up a cargo-fuzz scaffold at the repository root so contributors and
CI can fuzz the multiplex frame parser - the highest-level entry point
that consumes untrusted bytes from network peers. Coverage-guided
exploration will fan out across header validation, payload-length
checks, and message-code decoding without needing per-path harnesses.

The fuzz crate is excluded from the root workspace so libfuzzer-sys
does not leak into ordinary `cargo build` runs.

Refs #1195 #1291 #1293 #1304 #2103
oferchen added a commit that referenced this pull request May 18, 2026
… (#4181)

* test(protocol): adversarial stream corpus for parser robustness (#1195)

Add a curated corpus of malformed, truncated, and edge-case byte streams
that exercise the multiplex reader, legacy `@RSYNCD:` handshake parser,
varint and fixed-int decoders, delta token decoder, file-list name
decoder, and filter-rule wire decoder. Each entry carries an inline
comment describing the regression it would catch, and three runners
assert documented outcomes: clean parse, specific error kind, or no
panic under `catch_unwind`.

Designed as the static regression seed for live interop fuzzing (#1196).
The corpus is extensible: new adversarial inputs are added by appending
to the relevant static array.

* style(protocol): apply rustfmt to adversarial_stream_corpus

* fix(protocol): move cursor inside catch_unwind closure for UnwindSafe

* test(protocol): add corpus entries that exercise NoPanic and Ok outcomes

Adds one MULTIPLEX_CASES entry tagged Outcome::NoPanic (arbitrary bytes
that must not crash the reader) and one LEGACY_GREETING_CASES entry
tagged GreetingOutcome::Ok (canonical \@rsyncd: 32.0 line).
Removes the dead_code warning the unused variants triggered without
silencing the lint.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant