Vixen
02b45cc4
csharp
public sealed class RpcRouterTarget

The remote-call router, taking calls from a client that is not to be trusted.

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

Remarks

An RPC is the one thing a client can make a server do work for. Everything else a server does on a client's behalf, it does because it decided to; a remote call is the client deciding. The router's own remarks list six checks before anything runs, and this is what tests that a packet cannot get past them — in particular that a pair of indices cannot name a method outside the manifest, and that arguments which do not decode leave the handler unrun rather than half-run.

The handler is a real one and it records what it was told. A fuzz target whose invoker returns false immediately would prove that the router refuses everything, which is not the claim. This one decodes its arguments the way a generated invoker does and counts the calls that reached it, so an input that talks its way through all six checks is visible in the signature rather than indistinguishable from one that did not.

Fields and properties (2)

  • 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.

Methods (5)

  • public RpcRouterTarget()

    Creates the target with one object registered and its caller owning it.

  • 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.

Used by (1)

  • FuzzTargetsVixen.Net.Fuzz