X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/efa2c6e65983a0917119d7eaf1daa42bc440f52a..9f842eecf59f293fd800ece28be2730ff3a39487:/sdk/go/arvados/collection_fs.go diff --git a/sdk/go/arvados/collection_fs.go b/sdk/go/arvados/collection_fs.go index 7bbbaa492c..d8ee2a2b1c 100644 --- a/sdk/go/arvados/collection_fs.go +++ b/sdk/go/arvados/collection_fs.go @@ -1078,6 +1078,10 @@ func (dn *dirnode) Rename(oldname, newname string) error { if !ok { return os.ErrNotExist } + if locked[oldinode] { + // oldinode cannot become a descendant of itself. + return ErrInvalidArgument + } if existing, ok := newdn.inodes[newname]; ok { // overwriting an existing file or dir if dn, ok := existing.(*dirnode); ok {