🐛 fix: validate .tsf files and mmap frame data

This commit is contained in:
2026-07-16 21:57:26 +07:00
parent 172615f68f
commit 340b26ddb7
4 changed files with 191 additions and 29 deletions
+11 -4
View File
@@ -7,7 +7,7 @@ import (
"syscall"
)
func readFrameFile(filename string) ([]byte, error) {
func readFrameFile(filename string) (*frameFile, error) {
f, err := os.Open(filename)
if err != nil {
return nil, err
@@ -20,11 +20,18 @@ func readFrameFile(filename string) ([]byte, error) {
}
size := info.Size()
if size <= 0 || size != int64(int(size)) {
return os.ReadFile(filename)
data, err := os.ReadFile(filename)
return &frameFile{data: data}, err
}
data, err := syscall.Mmap(int(f.Fd()), 0, int(size), syscall.PROT_READ, syscall.MAP_SHARED)
if err != nil {
return os.ReadFile(filename)
data, err := os.ReadFile(filename)
return &frameFile{data: data}, err
}
return data, nil
return &frameFile{
data: data,
cleanup: func() error {
return syscall.Munmap(data)
},
}, nil
}