MCPcopy Create free account
hub / github.com/BlackVectorOps/semantic_firewall / ReadFile

Method ReadFile

pkg/api/filesystem.go:39–68  ·  view source on GitHub ↗
(name string)

Source from the content-addressed store, hash-verified

37}
38
39func (RealFileSystem) ReadFile(name string) ([]byte, error) {
40 f, err := os.Open(name)
41 if err != nil {
42 return nil, err
43 }
44 defer f.Close()
45
46 info, err := f.Stat()
47 if err != nil {
48 return nil, err
49 }
50 if info.IsDir() {
51 return nil, fmt.Errorf("path is a directory: %s", name)
52 }
53 if info.Size() > models.MaxSourceFileSize {
54 return nil, fmt.Errorf("file exceeds maximum supported size of %d bytes", models.MaxSourceFileSize)
55 }
56
57 // Read one byte past the cap so an under-reported size can still be
58 // detected and rejected, rather than silently truncated.
59 limit := int64(models.MaxSourceFileSize + 1)
60 content, err := io.ReadAll(io.LimitReader(f, limit))
61 if err != nil {
62 return nil, err
63 }
64 if len(content) > models.MaxSourceFileSize {
65 return nil, fmt.Errorf("file exceeds maximum supported size of %d bytes", models.MaxSourceFileSize)
66 }
67 return content, nil
68}

Callers

nothing calls this directly

Calls 5

SizeMethod · 0.80
OpenMethod · 0.65
CloseMethod · 0.65
StatMethod · 0.65
IsDirMethod · 0.45

Tested by

no test coverage detected