[Spice-devel] [spice-server] cursor: Consistently use g_memdup() for cursor data

Frediano Ziglio fziglio at redhat.com
Thu Apr 5 08:43:17 UTC 2018


> 
> Currently, red-parse-qxl.c open codes g_memdup() when it needs to

"open codes" ?
well, currently uses g_malloc+memcpy which can be rewritten with
g_memdup.

> duplicate the cursor data, while red-stream-device.c does this using
> spice_memdup(). This commit makes use of g_memdup() in both cases so
> that this memory is consistently allocated through glib.
> 

Yes, this is potentially a bug, good catch.

> Signed-off-by: Christophe Fergeau <cfergeau at redhat.com>
> ---
>  server/red-parse-qxl.c     | 3 +--
>  server/red-stream-device.c | 2 +-
>  2 files changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
> index 69748698a..d0e7eb718 100644
> --- a/server/red-parse-qxl.c
> +++ b/server/red-parse-qxl.c
> @@ -1450,8 +1450,7 @@ static bool red_get_cursor(RedMemSlotInfo *slots, int
> group_id,
>      if (free_data) {
>          red->data = data;
>      } else {
> -        red->data = g_malloc(size);
> -        memcpy(red->data, data, size);
> +        red->data = g_memdup(data, size);
>      }
>      return true;
>  }
> diff --git a/server/red-stream-device.c b/server/red-stream-device.c
> index 7f01236ba..0dcc4d609 100644
> --- a/server/red-stream-device.c
> +++ b/server/red-stream-device.c
> @@ -344,7 +344,7 @@ stream_msg_cursor_set_to_cursor_cmd(const
> StreamMsgCursorSet *msg, size_t msg_si
>          return NULL;
>      }
>      cursor->data_size = size_required;
> -    cursor->data = spice_memdup(msg->data, size_required);
> +    cursor->data = g_memdup(msg->data, size_required);
>      return cmd;
>  }
>  

Frediano


More information about the Spice-devel mailing list