Skip to content

Commit

Permalink
utils: merkletrie, Skip loading sockets as filesystem nodes. Fixes #312
Browse files Browse the repository at this point in the history
  • Loading branch information
steiler committed Nov 16, 2023
1 parent e24e0f7 commit 0646007
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
4 changes: 4 additions & 0 deletions utils/merkletrie/filesystem/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,10 @@ func (n *node) calculateChildren() error {
continue
}

if file.Mode()&os.ModeSocket != 0 {
continue
}

c, err := n.newChildNode(file)
if err != nil {
return err
Expand Down
24 changes: 24 additions & 0 deletions utils/merkletrie/filesystem/node_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ package filesystem

import (
"bytes"
"fmt"
"io"
"net"
"os"
"path"
"testing"
Expand All @@ -13,6 +15,7 @@ import (

"github.com/go-git/go-billy/v5"
"github.com/go-git/go-billy/v5/memfs"
"github.com/go-git/go-billy/v5/osfs"
. "gopkg.in/check.v1"
)

Expand Down Expand Up @@ -196,6 +199,27 @@ func (s *NoderSuite) TestDiffDirectory(c *C) {
c.Assert(a, Equals, merkletrie.Modify)
}

func (s *NoderSuite) TestSocket(c *C) {
td, err := os.MkdirTemp("", "socket-test")
c.Assert(err, IsNil)

sock, err := net.ListenUnix("unix", &net.UnixAddr{Name: fmt.Sprintf("%s/socket", td), Net: "unix"})
c.Assert(err, IsNil)

defer sock.Close()

fsA := osfs.New(td)
WriteFile(fsA, "foo", []byte("foo"), 0644)

noder := NewRootNode(fsA, nil)
childs, err := noder.Children()
c.Assert(err, IsNil)

c.Assert(childs, HasLen, 1)

defer os.RemoveAll(td)
}

func WriteFile(fs billy.Filesystem, filename string, data []byte, perm os.FileMode) error {
f, err := fs.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm)
if err != nil {
Expand Down

0 comments on commit 0646007

Please sign in to comment.