summaryrefslogtreecommitdiff
path: root/src/util/virportallocator.c
diff options
context:
space:
mode:
authorJán Tomko <jtomko@redhat.com>2019-01-21 15:49:23 +0100
committerJán Tomko <jtomko@redhat.com>2019-01-25 14:50:05 +0100
commitc2a8256991d772323a3df08c33b012bf12d62645 (patch)
treeb494d490a4a97c2cfd2633e8f6d7e041ae2b73a8 /src/util/virportallocator.c
parent872b15dea6623490c223b0c8081e14f280459a60 (diff)
downloadlibvirt-c2a8256991d772323a3df08c33b012bf12d62645.tar.gz
virPortAllocatorSetUsed: ignore port 0
Similar to what commit 86dba8f3 did for virPortAllocatorRelease, ignore port 0 in virPortAllocatorSetUsed. For all the reasonable use cases the callers already check that the port is non-zero, however if the port from the XML overflows unsigned short and turns into 0, it can be set as used by virPortAllocatorSetUsed but not released by virPortAllocatorRelease. Also skip port '0' in virPortAllocatorSetUsed to make this behavior symmetric. The serenity was disturbed by commit 5dbda5e9 which started using virPortAllocatorRelease instead of virPortAllocatorSetUsed (false). https://bugzilla.redhat.com/show_bug.cgi?id=1591645 Signed-off-by: Ján Tomko <jtomko@redhat.com> Reviewed-by: Cole Robinson <crobinso@redhat.com>
Diffstat (limited to 'src/util/virportallocator.c')
-rw-r--r--src/util/virportallocator.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/util/virportallocator.c b/src/util/virportallocator.c
index db95a601c7..d48963c1ff 100644
--- a/src/util/virportallocator.c
+++ b/src/util/virportallocator.c
@@ -294,6 +294,9 @@ virPortAllocatorSetUsed(unsigned short port)
if (!pa)
return -1;
+ if (!port)
+ return 0;
+
virObjectLock(pa);
if (virBitmapIsBitSet(pa->bitmap, port) ||