[Spice-devel] [spice-server PATCH v2 09/10] smartcard: use SPICE_ALIGNED_CAST
Victor Toso
victortoso at redhat.com
Fri Aug 14 09:24:30 PDT 2015
In order to avoid false posive alignment warnings
clang:
smartcard.c:131:29: error: cast from 'uint8_t *' (aka 'unsigned char *')
to 'VSCMsgHeader *' (aka 'struct VSCMsgHeader *') increases required
alignment from 1 to 4 [-Werror,-Wcast-align]
VSCMsgHeader *vheader = (VSCMsgHeader*)state->buf;
^~~~~~~~~~~~~~~~~~~~~~~~~
---
server/smartcard.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/server/smartcard.c b/server/smartcard.c
index aad22aa..3816cd5 100644
--- a/server/smartcard.c
+++ b/server/smartcard.c
@@ -128,7 +128,7 @@ SpiceCharDeviceMsgToClient *smartcard_read_msg_from_device(SpiceCharDeviceInstan
{
SmartCardDeviceState *state = opaque;
SpiceCharDeviceInterface *sif = SPICE_CONTAINEROF(sin->base.sif, SpiceCharDeviceInterface, base);
- VSCMsgHeader *vheader = (VSCMsgHeader*)state->buf;
+ VSCMsgHeader *vheader = SPICE_ALIGNED_CAST(VSCMsgHeader, state->buf);
int n;
int remaining;
int actual_length;
@@ -328,7 +328,7 @@ static void smartcard_char_device_notify_reader_add(SmartCardDeviceState *st)
return;
}
st->reader_added = TRUE;
- vheader = (VSCMsgHeader *)write_buf->buf;
+ vheader = SPICE_ALIGNED_CAST(VSCMsgHeader, write_buf->buf);
vheader->type = VSC_ReaderAdd;
vheader->reader_id = st->reader_id;
vheader->length = 0;
@@ -375,7 +375,7 @@ static void smartcard_char_device_notify_reader_remove(SmartCardDeviceState *st)
return;
}
st->reader_added = FALSE;
- vheader = (VSCMsgHeader *)write_buf->buf;
+ vheader = SPICE_ALIGNED_CAST(VSCMsgHeader, write_buf->buf);
vheader->type = VSC_ReaderRemove;
vheader->reader_id = st->reader_id;
vheader->length = 0;
@@ -652,7 +652,7 @@ static void smartcard_channel_write_to_reader(SpiceCharDeviceWriteBuffer *write_
VSCMsgHeader *vheader;
uint32_t actual_length;
- vheader = (VSCMsgHeader *)write_buf->buf;
+ vheader = SPICE_ALIGNED_CAST(VSCMsgHeader, write_buf->buf);
actual_length = vheader->length;
spice_assert(vheader->reader_id <= g_smartcard_readers.num);
@@ -688,7 +688,7 @@ static void smartcard_device_state_restore_partial_read(SmartCardDeviceState *st
if (mig_data->read_size < sizeof(VSCMsgHeader)) {
spice_assert(state->buf_size >= mig_data->read_size);
} else {
- smartcard_read_buf_prepare(state, (VSCMsgHeader *)read_data);
+ smartcard_read_buf_prepare(state, SPICE_ALIGNED_CAST(VSCMsgHeader, read_data));
}
memcpy(state->buf, read_data, mig_data->read_size);
state->buf_used = mig_data->read_size;
@@ -742,7 +742,7 @@ static int smartcard_channel_handle_message(RedChannelClient *rcc,
uint32_t size,
uint8_t *msg)
{
- VSCMsgHeader* vheader = (VSCMsgHeader*)msg;
+ VSCMsgHeader* vheader = SPICE_ALIGNED_CAST(VSCMsgHeader, msg);
SmartCardChannelClient *scc = SPICE_CONTAINEROF(rcc, SmartCardChannelClient, base);
if (type != SPICE_MSGC_SMARTCARD_DATA) {
--
2.4.3
More information about the Spice-devel
mailing list