[Spice-devel] [spice-streaming-agent PATCH 1/2] start streaming: check num_codecs

Jonathon Jongsma jjongsma at redhat.com
Wed Aug 1 16:59:33 UTC 2018


On Wed, 2018-08-01 at 15:43 +0300, Uri Lublin wrote:
> The server sends StreamMsgStartStop to tell spice-streaming-agent
> to start streaming and a list of available codecs.
> 
> The first uint8_t is the number of codecs.
> Each following uint8_t is a codec.
> 
> This patch checks that the number of codecs in the message, as
> reported by the server, is not too large.
> ---
>  src/spice-streaming-agent.cpp | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/src/spice-streaming-agent.cpp b/src/spice-streaming-
> agent.cpp
> index a9baf4d..05a1761 100644
> --- a/src/spice-streaming-agent.cpp
> +++ b/src/spice-streaming-agent.cpp
> @@ -91,6 +91,11 @@ static void handle_stream_start_stop(StreamPort
> &stream_port, uint32_t len)
>      syslog(LOG_INFO, "GOT START_STOP message -- request to %s
> streaming",
>             streaming_requested ? "START" : "STOP");
>      client_codecs.clear();
> +    const int mnc = len - 1; /* max num codecs, see struct
> StreamMsgStartStop */

I find the name 'mnc' to be a bit too opaque. I'd prefer something a
bit more verbose like 'max_codecs'.

> +    if (msg[0] > mnc) {
> +        throw std::runtime_error("num_codecs=" +
> std::to_string(msg[0]) +
> +                                 " > max_num_codecs=(" +
> std::to_string(mnc));
> +    }
>      for (int i = 1; i <= msg[0]; ++i) {
>          client_codecs.insert((SpiceVideoCodecType) msg[i]);
>      }


otherwise,

Acked-by: Jonathon Jongsma <jjongsma at redhat.com>


More information about the Spice-devel mailing list