void *spice_malloc0_n(size_t n_blocks, size_t n_block_bytes) { if (SIZE_OVERFLOWS (n_blocks, n_block_bytes)) { MALLOC_ERROR("spice_malloc0_n: overflow allocating %lu*%lu bytes", (unsigned long)n_blocks, (unsigned long)n_block_bytes); } return spice_malloc0 (n_blocks * n_block_bytes); }
static PipeItem *new_cursor_pipe_item(RedChannelClient *rcc, void *data, int num) { CursorPipeItem *item = spice_malloc0(sizeof(CursorPipeItem)); red_channel_pipe_item_init(rcc->channel, &item->base, PIPE_ITEM_TYPE_CURSOR); item->refs = 1; item->cursor_item = data; item->cursor_item->refs++; return &item->base; }
static void* create_chunk(size_t prefix, uint32_t size, QXLDataChunk* prev, int fill) { uint8_t *ptr = spice_malloc0(prefix + sizeof(QXLDataChunk) + size); QXLDataChunk *qxl = (QXLDataChunk *) (ptr + prefix); memset(&qxl->data[0], fill, size); qxl->data_size = size; qxl->prev_chunk = to_physical(prev); if (prev) prev->next_chunk = to_physical(qxl); return ptr; }
RedsStream *reds_stream_new(RedsState *reds, int socket) { RedsStream *stream; stream = spice_malloc0(sizeof(RedsStream) + sizeof(RedsStreamPrivate)); stream->priv = (RedsStreamPrivate *)(stream+1); stream->priv->info = spice_new0(SpiceChannelEventInfo, 1); stream->priv->reds = reds; reds_stream_set_socket(stream, socket); stream->priv->read = stream_read_cb; stream->priv->write = stream_write_cb; stream->priv->writev = stream_writev_cb; return stream; }
static uint8_t expected_data[] = { 0x02, 0x00, 0x00, 0x00, /* data_size */ 0x08, 0x00, 0x00, 0x00, /* data offset */ 0xef, 0xcd, 0xab, 0x90, 0x78, 0x56, 0x34, 0x12, /* data */ 0xef, 0xcd, 0xab, 0x90, 0x78, 0x56, 0x34, 0x12, /* data */ }; int main(int argc G_GNUC_UNUSED, char **argv G_GNUC_UNUSED) { SpiceMarshaller *marshaller; SpiceMsgMainShortDataSubMarshall *msg; size_t len; int free_res; uint8_t *data; msg = spice_malloc0(sizeof(SpiceMsgMainShortDataSubMarshall) + 2 * sizeof(uint64_t)); msg->data_size = 2; msg->data[0] = 0x1234567890abcdef; msg->data[1] = 0x1234567890abcdef; marshaller = spice_marshaller_new(); spice_marshall_msg_main_ShortDataSubMarshall(marshaller, msg); spice_marshaller_flush(marshaller); data = spice_marshaller_linearize(marshaller, 0, &len, &free_res); g_assert_cmpint(len, ==, G_N_ELEMENTS(expected_data)); g_assert_true(memcmp(data, expected_data, len) == 0); if (free_res) { free(data); } spice_marshaller_destroy(marshaller); free(msg);