The transfer between the codecs array and the message payload cannot be done with memcpy because the data-types are different (gint/uint8_t). Signed-off-by: Kevin Pouget <kpouget@xxxxxxxxxx> --- src/channel-display.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/channel-display.c b/src/channel-display.c index 44555e3..59c809d 100644 --- a/src/channel-display.c +++ b/src/channel-display.c @@ -615,11 +615,17 @@ static void spice_display_send_client_preferred_video_codecs(SpiceChannel *chann { SpiceMsgOut *out; SpiceMsgcDisplayPreferredVideoCodecType *msg; + int i; msg = g_malloc0(sizeof(SpiceMsgcDisplayPreferredVideoCodecType) + - (sizeof(SpiceVideoCodecType) * ncodecs)); + (sizeof(msg->codecs[0]) * ncodecs)); msg->num_of_codecs = ncodecs; - memcpy(msg->codecs, codecs, sizeof(*codecs) * ncodecs); + + /* cannot memcpy because codecs is gint, but msg->codecs is uint8_t + * but safe because SpiceVideoCodecType <= 255 */ + for (i = 0; i < ncodecs; i++) { + msg->codecs[i] = codecs[i]; + } out = spice_msg_out_new(channel, SPICE_MSGC_DISPLAY_PREFERRED_VIDEO_CODEC_TYPE); out->marshallers->msgc_display_preferred_video_codec_type(out->marshaller, msg); -- 2.21.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel