forked from TrueCloudLab/rclone
cache: fix nil pointer deref when using lsjson on cached directory
This stops embedding the fs.Directory into the cache.Directory because it can be nil and implements an ID method which checks the nil status. See: https://forum.rclone.org/t/runtime-error-with-cache-remote-and-lsjson/6305
This commit is contained in:
parent
1f3778dbfb
commit
ffd11662ba
1 changed files with 9 additions and 1 deletions
10
backend/cache/directory.go
vendored
10
backend/cache/directory.go
vendored
|
@ -12,7 +12,7 @@ import (
|
|||
|
||||
// Directory is a generic dir that stores basic information about it
|
||||
type Directory struct {
|
||||
fs.Directory `json:"-"`
|
||||
Directory fs.Directory `json:"-"` // can be nil
|
||||
|
||||
CacheFs *Fs `json:"-"` // cache fs
|
||||
Name string `json:"name"` // name of the directory
|
||||
|
@ -125,6 +125,14 @@ func (d *Directory) Items() int64 {
|
|||
return d.CacheItems
|
||||
}
|
||||
|
||||
// ID returns the ID of the cached directory if known
|
||||
func (d *Directory) ID() string {
|
||||
if d.Directory == nil {
|
||||
return ""
|
||||
}
|
||||
return d.Directory.ID()
|
||||
}
|
||||
|
||||
var (
|
||||
_ fs.Directory = (*Directory)(nil)
|
||||
)
|
||||
|
|
Loading…
Add table
Reference in a new issue