Skip to content

Commit 147f0a7

Browse files
committed
check for duplicate nspath possibilities
Signed-off-by: Mike Brown <[email protected]>
1 parent e079e4a commit 147f0a7

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

pkg/netns/netns_linux.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ import (
5252
// path to the network namespace.
5353
func newNS(baseDir string) (nsPath string, err error) {
5454
b := make([]byte, 16)
55-
if _, err := rand.Reader.Read(b); err != nil {
55+
56+
_, err = rand.Read(b)
57+
if err != nil {
5658
return "", fmt.Errorf("failed to generate random netns name: %w", err)
5759
}
5860

@@ -63,10 +65,10 @@ func newNS(baseDir string) (nsPath string, err error) {
6365
return "", err
6466
}
6567

66-
// create an empty file at the mount point
68+
// create an empty file at the mount point and fail if it already exists
6769
nsName := fmt.Sprintf("cni-%x-%x-%x-%x-%x", b[0:4], b[4:6], b[6:8], b[8:10], b[10:])
6870
nsPath = path.Join(baseDir, nsName)
69-
mountPointFd, err := os.Create(nsPath)
71+
mountPointFd, err := os.OpenFile(nsPath, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0666)
7072
if err != nil {
7173
return "", err
7274
}

0 commit comments

Comments
 (0)