s3: fix slice bounds out of range error when listing

In this commit:

5f938fb9ed s3: fix "Entry doesn't belong in directory" errors when using directory markers

We checked that the remote has the prefix and then changed the remote
before removing the prefix. This sometimes causes:

    panic: runtime error: slice bounds out of range [56:55]

The fix is to do the modification of the remote after removing the
prefix.

See: https://forum.rclone.org/t/cryptcheck-panic-runtime-error-slice-bounds-out-of-range/41977
This commit is contained in:
Nick Craig-Wood 2023-09-24 16:51:58 +01:00
parent 23e44c6065
commit b296f37801

View file

@ -3868,11 +3868,13 @@ func (f *Fs) list(ctx context.Context, opt listOpt, fn listFn) error {
if remote == opt.directory { if remote == opt.directory {
continue continue
} }
// process directory markers as directories
remote = strings.TrimRight(remote, "/")
} }
} }
remote = remote[len(opt.prefix):] remote = remote[len(opt.prefix):]
if isDirectory {
// process directory markers as directories
remote = strings.TrimRight(remote, "/")
}
if opt.addBucket { if opt.addBucket {
remote = bucket.Join(opt.bucket, remote) remote = bucket.Join(opt.bucket, remote)
} }