summaryrefslogtreecommitdiffstats
path: root/server/smartcard.c
diff options
context:
space:
mode:
authorYonit Halperin <yhalperi@redhat.com>2012-01-05 17:31:34 +0200
committerYonit Halperin <yhalperi@redhat.com>2012-01-12 16:17:02 +0200
commit8b64b95c4339c145867e42f71b3206378bc7c83b (patch)
tree1c1ade429b293ce64fb75eae56831a61a4c4fd6b /server/smartcard.c
parenta54f26d04e9a391977a8030d609b52e50243ba52 (diff)
downloadspice-8b64b95c4339c145867e42f71b3206378bc7c83b.tar.gz
spice-8b64b95c4339c145867e42f71b3206378bc7c83b.tar.xz
spice-8b64b95c4339c145867e42f71b3206378bc7c83b.zip
server: Limit the access to SpiceDataHeader of messages - only via red_channel.
Diffstat (limited to 'server/smartcard.c')
-rw-r--r--server/smartcard.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/server/smartcard.c b/server/smartcard.c
index f9cafdfa..08ba3da8 100644
--- a/server/smartcard.c
+++ b/server/smartcard.c
@@ -273,15 +273,18 @@ static int smartcard_channel_client_config_socket(RedChannelClient *rcc)
}
static uint8_t *smartcard_channel_alloc_msg_rcv_buf(RedChannelClient *rcc,
- SpiceDataHeader *msg_header)
+ uint16_t type,
+ uint32_t size)
{
- return spice_malloc(msg_header->size);
+ return spice_malloc(size);
}
static void smartcard_channel_release_msg_rcv_buf(RedChannelClient *rcc,
- SpiceDataHeader *msg_header, uint8_t *msg)
+ uint16_t type,
+ uint32_t size,
+ uint8_t *msg)
{
- red_printf("freeing %d bytes", msg_header->size);
+ red_printf("freeing %d bytes", size);
free(msg);
}
@@ -439,14 +442,15 @@ static void smartcard_channel_write_to_reader(VSCMsgHeader *vheader)
}
static int smartcard_channel_handle_message(RedChannelClient *rcc,
- SpiceDataHeader *header,
+ uint16_t type,
+ uint32_t size,
uint8_t *msg)
{
VSCMsgHeader* vheader = (VSCMsgHeader*)msg;
- if (header->type != SPICE_MSGC_SMARTCARD_DATA) {
+ if (type != SPICE_MSGC_SMARTCARD_DATA) {
/* handle ack's, spicy sends them while spicec does not */
- return red_channel_client_handle_message(rcc, header->size, header->type, msg);
+ return red_channel_client_handle_message(rcc, size, type, msg);
}
ASSERT(header->size == vheader->length + sizeof(VSCMsgHeader));