[Spice-devel] [PATCH spice v3 3/3] Do not crash on NULL codecs

Frediano Ziglio fziglio at redhat.com
Thu Nov 17 09:22:30 UTC 2016


> ---
>  server/reds.c                            |  2 ++
>  server/tests/spice-codecs-parsing-test.c | 15 ++++++++++++++-
>  2 files changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/server/reds.c b/server/reds.c
> index 12a274c..8344177 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -3639,6 +3639,8 @@ static void reds_set_video_codecs(RedsState *reds,
> const char *codecs)
>  {
>      char *encoder_name, *codec_name;
>  
> +    g_return_if_fail(codecs != NULL);
> +
>      if (strcmp(codecs, "auto") == 0) {
>          codecs = default_video_codecs;
>      }
> diff --git a/server/tests/spice-codecs-parsing-test.c
> b/server/tests/spice-codecs-parsing-test.c
> index 9db321d..0e23553 100644
> --- a/server/tests/spice-codecs-parsing-test.c
> +++ b/server/tests/spice-codecs-parsing-test.c
> @@ -59,33 +59,46 @@ static void codecs_bad(void)
>      guint i;
>      const struct {
>          const gchar *codecs;
> +        const GLogLevelFlags log_level;
>          const gchar *error_message;
>      } test_cases[] = {
>          {
> +            NULL,
> +            G_LOG_LEVEL_CRITICAL,
> +            "*assertion 'codecs != NULL' failed"
> +        },{
>              ";:;",
> +            G_LOG_LEVEL_WARNING,
>              "*spice: invalid encoder:codec value*",
>          },{
>              "::::",
> +            G_LOG_LEVEL_WARNING,
>              "*spice: invalid encoder:codec value*",
>          },{
>              "missingcolon",
> +            G_LOG_LEVEL_WARNING,
>              "*spice: invalid encoder:codec value*",
>          },{
>              ":missing_encoder",
> +            G_LOG_LEVEL_WARNING,
>              "*spice: invalid encoder:codec value*",
>          },{
>              "missing_value:;",
> +            G_LOG_LEVEL_WARNING,
>              "*spice: invalid encoder:codec value*",
>          },{
>              "unknown_encoder:mjpeg",
> +            G_LOG_LEVEL_WARNING,
>              "*spice: unknown video encoder unknown_encoder",
>          },{
>              "spice:unknown_codec",
> +            G_LOG_LEVEL_WARNING,
>              "*spice: unknown video codec unknown_codec",
>          },
>  #if !defined(HAVE_GSTREAMER_1_0) && !defined(HAVE_GSTREAMER_0_10)
>          {
>              "gstreamer:mjpeg",
> +            G_LOG_LEVEL_WARNING,
>              "*spice: unsupported video encoder gstreamer",
>          }
>  #endif
> @@ -96,7 +109,7 @@ static void codecs_bad(void)
>      g_assert_nonnull(server);
>  
>      for (i = 0; i < G_N_ELEMENTS(test_cases); ++i) {
> -        g_test_expect_message(G_LOG_DOMAIN, G_LOG_LEVEL_WARNING,
> test_cases[i].error_message);
> +        g_test_expect_message(G_LOG_DOMAIN, test_cases[i].log_level,
> test_cases[i].error_message);
>          g_assert_cmpint(spice_server_set_video_codecs(server,
>          test_cases[i].codecs), ==, 0);
>          g_test_assert_expected_messages();
>      }

Acked-by: Frediano Ziglio <fziglio at redhat.com>

Note that this test crash if the patch I sent couple of minutes ago
is not applied

Frediano


More information about the Spice-devel mailing list