[Spice-devel] [PATCH spice-server] Avoid to access data before a NULL check
Christophe Fergeau
cfergeau at redhat.com
Fri Aug 25 13:33:00 UTC 2017
Acked-by: Christophe Fergeau <cfergeau at redhat.com>
On Fri, Aug 25, 2017 at 01:44:00PM +0100, Frediano Ziglio wrote:
> If you are testing for NULL data this means that variable could be
> NULL so avoid to access before the check to make sure the check is hit.
>
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
> server/cursor-channel.c | 3 ++-
> server/dcc-send.c | 11 ++++++++---
> server/stream.c | 3 ++-
> 3 files changed, 12 insertions(+), 5 deletions(-)
>
> Would not be easier to remove these checks?
>
> diff --git a/server/cursor-channel.c b/server/cursor-channel.c
> index 63d6886d..5ece576c 100644
> --- a/server/cursor-channel.c
> +++ b/server/cursor-channel.c
> @@ -182,11 +182,12 @@ static void cursor_pipe_item_free(RedPipeItem *base)
> static void red_marshall_cursor_init(CursorChannelClient *ccc, SpiceMarshaller *base_marshaller,
> RedPipeItem *pipe_item)
> {
> + spice_assert(ccc);
> +
> CursorChannel *cursor_channel;
> RedChannelClient *rcc = RED_CHANNEL_CLIENT(ccc);
> SpiceMsgCursorInit msg;
>
> - spice_assert(rcc);
> cursor_channel = CURSOR_CHANNEL(red_channel_client_get_channel(rcc));
>
> red_channel_client_init_send_data(rcc, SPICE_MSG_CURSOR_INIT);
> diff --git a/server/dcc-send.c b/server/dcc-send.c
> index 5a24e693..8e91b8fb 100644
> --- a/server/dcc-send.c
> +++ b/server/dcc-send.c
> @@ -1922,8 +1922,8 @@ static void red_marshall_image(RedChannelClient *rcc,
> SpiceMarshaller *m,
> RedImageItem *item)
> {
> - DisplayChannelClient *dcc = DISPLAY_CHANNEL_CLIENT(rcc);
> - DisplayChannel *display = DCC_TO_DC(dcc);
> + DisplayChannelClient *dcc;
> + DisplayChannel *display;
> SpiceImage red_image;
> SpiceBitmap bitmap;
> SpiceChunks *chunks;
> @@ -1932,7 +1932,12 @@ static void red_marshall_image(RedChannelClient *rcc,
> SpiceMarshaller *src_bitmap_out, *mask_bitmap_out;
> SpiceMarshaller *bitmap_palette_out, *lzplt_palette_out;
>
> - spice_assert(rcc && display && item);
> + spice_assert(rcc && item);
> +
> + dcc = DISPLAY_CHANNEL_CLIENT(rcc);
> +
> + display = DCC_TO_DC(dcc);
> + spice_assert(display);
>
> QXL_SET_IMAGE_ID(&red_image, QXL_IMAGE_GROUP_RED, display_channel_generate_uid(display));
> red_image.descriptor.type = SPICE_IMAGE_TYPE_BITMAP;
> diff --git a/server/stream.c b/server/stream.c
> index f74a1385..0148d1ed 100644
> --- a/server/stream.c
> +++ b/server/stream.c
> @@ -772,9 +772,10 @@ void stream_agent_stop(StreamAgent *agent)
>
> static void red_upgrade_item_free(RedPipeItem *base)
> {
> + g_return_if_fail(base != NULL);
> +
> RedUpgradeItem *item = SPICE_UPCAST(RedUpgradeItem, base);
>
> - g_return_if_fail(item != NULL);
> g_return_if_fail(item->base.refcount == 0);
>
> drawable_unref(item->drawable);
> --
> 2.13.5
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
More information about the Spice-devel
mailing list