From 2ffda87f2dce71024f72ccff32cbfe29ee676bf8 Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Wed, 19 Mar 2025 11:15:06 -0700 Subject: os: add Root.Rename For #67002 Change-Id: Ifb1042bc5ceaeea64296763319b24634bbcb0bf0 Reviewed-on: https://go-review.googlesource.com/c/go/+/659416 Reviewed-by: Ian Lance Taylor LUCI-TryBot-Result: Go LUCI Auto-Submit: Damien Neil --- src/os/root_noopenat.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/os/root_noopenat.go') diff --git a/src/os/root_noopenat.go b/src/os/root_noopenat.go index f0e1aa5131..4a4aa684af 100644 --- a/src/os/root_noopenat.go +++ b/src/os/root_noopenat.go @@ -166,3 +166,17 @@ func rootReadlink(r *Root, name string) (string, error) { } return name, nil } + +func rootRename(r *Root, oldname, newname string) error { + if err := checkPathEscapesLstat(r, oldname); err != nil { + return &PathError{Op: "renameat", Path: oldname, Err: err} + } + if err := checkPathEscapesLstat(r, newname); err != nil { + return &PathError{Op: "renameat", Path: newname, Err: err} + } + err := Rename(joinPath(r.root.name, oldname), joinPath(r.root.name, newname)) + if err != nil { + return &LinkError{"renameat", oldname, newname, underlyingError(err)} + } + return nil +} -- cgit v1.3-5-g9baa