fix: Prevent nil errors on creating FileInfo structs

This commit is contained in:
Felicitas Pojtinger
2021-12-28 21:59:36 +01:00
parent 928289b9a0
commit 40a5b9608f
8 changed files with 55 additions and 31 deletions

View File

@@ -136,13 +136,14 @@ func (f *File) syncWithoutLocking() error {
return config.FileConfig{}, err
}
f.info = &FileInfo{
name: f.info.Name(),
size: size,
mode: f.info.Mode(),
modTime: f.info.ModTime(),
isDir: f.info.IsDir(),
}
f.info = NewFileInfo(
f.info.Name(),
size,
f.info.Mode(),
f.info.ModTime(),
f.info.IsDir(),
f.log,
)
return config.FileConfig{
GetFile: func() (io.ReadSeekCloser, error) {
@@ -392,7 +393,7 @@ func (f *File) Readdir(count int) ([]os.FileInfo, error) {
fileInfos := []os.FileInfo{}
for _, hdr := range hdrs {
fileInfos = append(fileInfos, NewFileInfo(hdr, f.log))
fileInfos = append(fileInfos, NewFileInfoFromTarHeader(hdr, f.log))
}
return fileInfos, nil

View File

@@ -22,6 +22,26 @@ type FileInfo struct {
}
func NewFileInfo(
name string,
size int64,
mode fs.FileMode,
modTime time.Time,
isDir bool,
log *logging.JSONLogger,
) *FileInfo {
return &FileInfo{
name: name,
size: size,
mode: mode,
modTime: modTime,
isDir: isDir,
log: log,
}
}
func NewFileInfoFromTarHeader(
hdr *tar.Header,
log *logging.JSONLogger,

View File

@@ -285,7 +285,7 @@ func (f *FileSystem) OpenFile(name string, flag int, perm os.FileMode) (afero.Fi
f.getFileBuffer,
path.Base(hdr.Name),
NewFileInfo(hdr, f.log),
NewFileInfoFromTarHeader(hdr, f.log),
f.onHeader,
f.log,
@@ -334,10 +334,10 @@ func (f *FileSystem) Stat(name string) (os.FileInfo, error) {
return nil, os.ErrNotExist
}
panic(err)
return nil, err
}
return NewFileInfo(hdr, f.log), nil
return NewFileInfoFromTarHeader(hdr, f.log), nil
}
func (f *FileSystem) updateMetadata(hdr *tar.Header) error {
@@ -384,7 +384,7 @@ func (f *FileSystem) Chmod(name string, mode os.FileMode) error {
return os.ErrNotExist
}
panic(err)
return err
}
hdr.Mode = int64(mode)
@@ -411,7 +411,7 @@ func (f *FileSystem) Chown(name string, uid, gid int) error {
return os.ErrNotExist
}
panic(err)
return err
}
hdr.Uid = uid
@@ -439,7 +439,7 @@ func (f *FileSystem) Chtimes(name string, atime time.Time, mtime time.Time) erro
return os.ErrNotExist
}
panic(err)
return err
}
hdr.AccessTime = atime
@@ -453,7 +453,7 @@ func (f *FileSystem) LstatIfPossible(name string) (os.FileInfo, bool, error) {
"name": name,
})
panic(ErrNotImplemented)
return nil, false, ErrNotImplemented
}
func (f *FileSystem) SymlinkIfPossible(oldname, newname string) error {
@@ -462,7 +462,7 @@ func (f *FileSystem) SymlinkIfPossible(oldname, newname string) error {
"newname": newname,
})
panic(ErrNotImplemented)
return ErrNotImplemented
}
func (f *FileSystem) ReadlinkIfPossible(name string) (string, error) {
@@ -470,5 +470,5 @@ func (f *FileSystem) ReadlinkIfPossible(name string) (string, error) {
"name": name,
})
panic(ErrNotImplemented)
return "", ErrNotImplemented
}