diff options
author | Alexander Larsson <alexl@redhat.com> | 2010-05-25 16:01:18 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2010-06-18 16:32:11 +0200 |
commit | 4154d7028943ca4bf0f1ff2e0480d688fc081fcc (patch) | |
tree | fe166cb9d21905653aed68592166b58f14927ff5 /common/gdi_canvas.c | |
parent | 17bbef4df334bd8d98d3960143f229d753b4b0a3 (diff) | |
download | spice-4154d7028943ca4bf0f1ff2e0480d688fc081fcc.tar.gz spice-4154d7028943ca4bf0f1ff2e0480d688fc081fcc.tar.xz spice-4154d7028943ca4bf0f1ff2e0480d688fc081fcc.zip |
Client: Use the autogenerated demarshallers
When a message has been read from the network we now pass it into
the generated demarshaller for the channel. The demarshaller converts
the network data to in-memory structures that is passed on to the
spice internals.
Additionally it also:
* Converts endianness
* Validates sizes of message and any pointers in it
* Localizes offsets (converts them to pointers)
* Checks for zero offsets in messages where they are not supported
Some of this was previously done using custom code in the client, this
is now removed.
Diffstat (limited to 'common/gdi_canvas.c')
-rw-r--r-- | common/gdi_canvas.c | 17 |
1 files changed, 0 insertions, 17 deletions
diff --git a/common/gdi_canvas.c b/common/gdi_canvas.c index 20113fe1..fea23906 100644 --- a/common/gdi_canvas.c +++ b/common/gdi_canvas.c @@ -311,18 +311,14 @@ uint32_t raster_ops[] = { static void set_path(GdiCanvas *canvas, void *addr) { uint32_t* data_size = (uint32_t*)addr; - access_test(&canvas->base, data_size, sizeof(uint32_t)); uint32_t more = *data_size; SpicePathSeg* seg = (SpicePathSeg*)(data_size + 1); do { - access_test(&canvas->base, seg, sizeof(SpicePathSeg)); - uint32_t flags = seg->flags; SpicePointFix* point = (SpicePointFix*)seg->data; SpicePointFix* end_point = point + seg->count; - access_test(&canvas->base, point, (unsigned long)end_point - (unsigned long)point); ASSERT(point < end_point); more -= ((unsigned long)end_point - (unsigned long)seg); seg = (SpicePathSeg*)end_point; @@ -399,11 +395,9 @@ static void set_clip(GdiCanvas *canvas, SpiceClip *clip) break; case SPICE_CLIP_TYPE_RECTS: { uint32_t *n = (uint32_t *)SPICE_GET_ADDRESS(clip->data); - access_test(&canvas->base, n, sizeof(uint32_t)); SpiceRect *now = (SpiceRect *)(n + 1); SpiceRect *end = now + *n; - access_test(&canvas->base, now, (unsigned long)end - (unsigned long)now); if (now < end) { HRGN main_hrgn; @@ -1643,8 +1637,6 @@ static uint32_t *gdi_get_userstyle(GdiCanvas *canvas, uint8_t nseg, SPICE_ADDRES uint32_t *local_style; int i; - access_test(&canvas->base, style, nseg * sizeof(*style)); - if (nseg == 0) { CANVAS_ERROR("bad nseg"); } @@ -1835,14 +1827,6 @@ static void gdi_canvas_clear(SpiceCanvas *spice_canvas) { } -static void gdi_canvas_set_access_params(SpiceCanvas *spice_canvas, unsigned long base, unsigned long max) -{ -#ifdef SW_CANVAS_ACCESS_TEST - GdiCanvas *canvas = (GdiCanvas *)spice_canvas; - __canvas_set_access_params(&canvas->base, base, max); -#endif -} - static void gdi_canvas_destroy(SpiceCanvas *spice_canvas) { GdiCanvas *canvas = (GdiCanvas *)spice_canvas; @@ -1915,7 +1899,6 @@ void gdi_canvas_init() //unsafe global function gdi_canvas_ops.draw_alpha_blend = gdi_canvas_draw_alpha_blend; gdi_canvas_ops.put_image = gdi_canvas_put_image; gdi_canvas_ops.clear = gdi_canvas_clear; - gdi_canvas_ops.set_access_params = gdi_canvas_set_access_params; gdi_canvas_ops.destroy = gdi_canvas_destroy; rop3_init(); |