session: allocate correct amount of memory in sr_packet_copy

We want the size of the struct, not of a pointer to the struct. And to
be absolutely future proof, dereference the pointer we are assigning the
memory to (not the one we are copying the data from). Found by Coverity,
CID 50858.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
Wolfram Sang 2016-02-21 10:06:10 +01:00 committed by Uwe Hermann
parent 2217be1dd4
commit b84f91ff2e
1 changed files with 3 additions and 3 deletions

View File

@ -1525,7 +1525,7 @@ SR_PRIV int sr_packet_copy(const struct sr_datafeed_packet *packet,
break;
case SR_DF_LOGIC:
logic = packet->payload;
logic_copy = g_malloc(sizeof(logic));
logic_copy = g_malloc(sizeof(*logic_copy));
logic_copy->length = logic->length;
logic_copy->unitsize = logic->unitsize;
memcpy(logic_copy->data, logic->data, logic->length * logic->unitsize);
@ -1533,7 +1533,7 @@ SR_PRIV int sr_packet_copy(const struct sr_datafeed_packet *packet,
break;
case SR_DF_ANALOG_OLD:
analog_old = packet->payload;
analog_old_copy = g_malloc(sizeof(analog_old));
analog_old_copy = g_malloc(sizeof(*analog_old_copy));
analog_old_copy->channels = g_slist_copy(analog_old->channels);
analog_old_copy->num_samples = analog_old->num_samples;
analog_old_copy->mq = analog_old->mq;
@ -1546,7 +1546,7 @@ SR_PRIV int sr_packet_copy(const struct sr_datafeed_packet *packet,
break;
case SR_DF_ANALOG:
analog = packet->payload;
analog_copy = g_malloc(sizeof(analog));
analog_copy = g_malloc(sizeof(*analog_copy));
analog_copy->data = g_malloc(
analog->encoding->unitsize * analog->num_samples);
memcpy(analog_copy->data, analog->data,