From: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> Handle unknown values instead of out-of-array access. Signed-off-by: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> --- tools/spicy.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/tools/spicy.c b/tools/spicy.c index a41a1a3..2f6be4e 100644 --- a/tools/spicy.c +++ b/tools/spicy.c @@ -181,14 +181,24 @@ static int ask_user(GtkWidget *parent, char *title, char *message, return retval; } -static const gchar *video_codec_enum_to_str[] = { - [0] = "none", - [SPICE_VIDEO_CODEC_TYPE_MJPEG] = "mjpeg", - [SPICE_VIDEO_CODEC_TYPE_VP8] = "vp8", - [SPICE_VIDEO_CODEC_TYPE_H264] = "h264", - [SPICE_VIDEO_CODEC_TYPE_VP9] = "vp9", - [SPICE_VIDEO_CODEC_TYPE_ENUM_END] = "error", -}; +static const gchar * +video_codec_to_string(SpiceVideoCodecType type) +{ + const char *str = NULL; + static const gchar *to_string[] = { + NULL, + [SPICE_VIDEO_CODEC_TYPE_MJPEG] = "mjpeg", + [SPICE_VIDEO_CODEC_TYPE_VP8] = "vp8", + [SPICE_VIDEO_CODEC_TYPE_H264] = "h264", + [SPICE_VIDEO_CODEC_TYPE_VP9] = "vp9", + }; + + if (type >= 0 && type < G_N_ELEMENTS(to_string)) { + str = to_string[type]; + } + + return str ? str : "unknown codec"; +} static void update_status_window(SpiceWindow *win) { @@ -201,7 +211,7 @@ static void update_status_window(SpiceWindow *win) g_string_printf(status, "mouse: %6s, agent: %3s, streaming: %5s", win->conn->mouse_state, win->conn->agent_state, - video_codec_enum_to_str[win->video_codec]); + video_codec_to_string(win->video_codec)); if (win->mouse_grabbed) { SpiceGrabSequence *sequence = spice_display_get_grab_keys(SPICE_DISPLAY(win->spice)); -- 2.12.0.191.gc5d8de91d _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel