From 4caae16a28aba9cd69c5f3febdaa3dcbc933846e Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Mon, 3 Aug 2020 15:23:51 +0200 Subject: [PATCH] userns: make sure host id is not always 0 when it finds multiple available ranges, make sure the host id is correctly initialized. Signed-off-by: Giuseppe Scrivano --- userns.go | 1 + userns_test.go | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/userns.go b/userns.go index c6c73e5ac..5ba8cc418 100644 --- a/userns.go +++ b/userns.go @@ -356,6 +356,7 @@ func findAvailableIDRange(size uint32, availableIDs, usedIDs []idtools.IDMap) ([ return avail[:i+1], nil } remaining -= uint32(avail[i].Size) + currentID += avail[i].Size } return nil, errors.New("could not find enough available IDs") diff --git a/userns_test.go b/userns_test.go index cb4673143..c51d2e5c9 100644 --- a/userns_test.go +++ b/userns_test.go @@ -256,4 +256,17 @@ func TestFindAvailableIDRange(t *testing.T) { assert.Equal(t, len(ret), 1) assert.Equal(t, ret[0].HostID, 100000+32768) assert.Equal(t, ret[0].Size, 4096) + + used = []idtools.IDMap{ + { + ContainerID: 0, + HostID: 100010, + Size: 10, + }, + } + ret, err = findAvailableIDRange(4096, avail, used) + assert.Nil(t, err) + assert.Equal(t, len(ret), 2) + assert.Equal(t, ret[0].HostID, 100000) + assert.Equal(t, ret[1].HostID, 100010) }