mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 14:45:24 +00:00
util: bitmap: Don't alloc overly large binary bitmaps
Optimize the virBitmap to array-of-char bitmap conversion by skipping
trailing zero bytes.
This also fixes a regression when requesting iothread information from a
live VM since after commit 825df8c315
the
bitmap returned from virProcessGetAffinity is too big to be formatted
properly via RPC. A user would get the following error:
error: Unable to get domain IOThreads information
error: Unable to encode message payload
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1238589
This commit is contained in:
parent
9777419c81
commit
e8c5f61e91
@ -498,9 +498,12 @@ virBitmapPtr virBitmapNewData(void *data, int len)
|
||||
*/
|
||||
int virBitmapToData(virBitmapPtr bitmap, unsigned char **data, int *dataLen)
|
||||
{
|
||||
int len;
|
||||
ssize_t len;
|
||||
|
||||
len = (bitmap->max_bit + CHAR_BIT - 1) / CHAR_BIT;
|
||||
if ((len = virBitmapLastSetBit(bitmap)) < 0)
|
||||
len = 1;
|
||||
else
|
||||
len = (len + CHAR_BIT) / CHAR_BIT;
|
||||
|
||||
if (VIR_ALLOC_N(*data, len) < 0)
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user