BOOL update_read_bitmap_update(rdpUpdate* update, wStream* s, BITMAP_UPDATE* bitmapUpdate) { int i; if (Stream_GetRemainingLength(s) < 2) return FALSE; Stream_Read_UINT16(s, bitmapUpdate->number); /* numberRectangles (2 bytes) */ if (bitmapUpdate->number > bitmapUpdate->count) { UINT16 count; count = bitmapUpdate->number * 2; bitmapUpdate->rectangles = (BITMAP_DATA*) realloc(bitmapUpdate->rectangles, sizeof(BITMAP_DATA) * count); ZeroMemory(&bitmapUpdate->rectangles[bitmapUpdate->count], sizeof(BITMAP_DATA) * (count - bitmapUpdate->count)); bitmapUpdate->count = count; } /* rectangles */ for (i = 0; i < (int) bitmapUpdate->number; i++) { if (!update_read_bitmap_data(update, s, &bitmapUpdate->rectangles[i])) return FALSE; } return TRUE; }
void update_read_bitmap(rdpUpdate* update, STREAM* s, BITMAP_UPDATE* bitmap_update) { int i; stream_read_UINT16(s, bitmap_update->number); /* numberRectangles (2 bytes) */ if (bitmap_update->number > bitmap_update->count) { UINT16 count; count = bitmap_update->number * 2; bitmap_update->rectangles = (BITMAP_DATA*) realloc(bitmap_update->rectangles, sizeof(BITMAP_DATA) * count); memset(&bitmap_update->rectangles[bitmap_update->count], 0, sizeof(BITMAP_DATA) * (count - bitmap_update->count)); bitmap_update->count = count; } /* rectangles */ for (i = 0; i < (int) bitmap_update->number; i++) { update_read_bitmap_data(s, &bitmap_update->rectangles[i]); } }
void update_read_bitmap(rdpUpdate* update, STREAM* s, BITMAP_UPDATE* bitmap_update) { int i; stream_read_uint16(s, bitmap_update->number); /* numberRectangles (2 bytes) */ bitmap_update->bitmaps = (BITMAP_DATA*) xzalloc(sizeof(BITMAP_DATA) * bitmap_update->number); /* rectangles */ for (i = 0; i < bitmap_update->number; i++) { update_read_bitmap_data(s, &bitmap_update->bitmaps[i]); } }