Vixen
02b45cc4
csharp
public sealed class SessionClientTarget

The client's receive path: what a server can talk a client into.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

Less exposed than the server's and worth fuzzing anyway. A client believes rather a lot about the peer it connected to — its player id, its tick, its reconnect token, its identity string — and "the server is trusted" is a weaker statement than it sounds when the server is a listen server run by another player, or a relay, or something that has got in between.

The client is restarted when an input stops it, because a stopped session decodes nothing and a run that quietly stopped fuzzing after the first ConnectRejected would report a clean million cases having tested one.

Fields and properties (4)

  • public string Name

    What to call it on a command line and in a report.

  • public string What

    Which receive path this is, in one line.

  • public long Held

    How many players this client believes are in the session.

  • public long HeldCap

    How many it may believe in: itself, and nothing else. A client is told about its own player and no others — the server's list is not the client's to have — so anything past one is a client that has been talked into keeping a record it will never use again.

Methods (6)

  • public SessionClientTarget()

    Creates the target, with a client half already trying to connect.

  • public long AllowanceFor(int inputLength)

    How many bytes an input may cause to be allocated.

  • public void Seed(ICollection<byte[]> corpus)

    Adds well-formed inputs for the mutator to start from.

  • public void Maintain()

    Puts the target back into a state worth fuzzing, before the next case.

  • public long Run(ReadOnlySpan<byte> input)

    Pushes one input through the decoder.

  • public void Dispose()

    Stops the session.

Used by (1)

  • FuzzTargetsVixen.Net.Fuzz