Only create the directory structure if it is a file being renamed; closes pterodactyl/panel#2292
This commit is contained in:
parent
cbf914e7a1
commit
481df3d543
|
@ -149,6 +149,13 @@ func putServerRenameFiles(c *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := g.Wait(); err != nil {
|
if err := g.Wait(); err != nil {
|
||||||
|
if errors.Is(err, os.ErrExist) {
|
||||||
|
c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{
|
||||||
|
"error": "Cannot move or rename file, destination already exists.",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
TrackedServerError(err, s).AbortWithServerError(c)
|
TrackedServerError(err, s).AbortWithServerError(c)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -496,17 +496,22 @@ func (fs *Filesystem) Rename(from string, to string) error {
|
||||||
return errors.WithStack(err)
|
return errors.WithStack(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if f, err := os.Stat(cleanedFrom); err != nil {
|
// If the target file or directory already exists the rename function will fail, so just
|
||||||
return errors.WithStack(err)
|
// bail out now.
|
||||||
} else {
|
if _, err := os.Stat(cleanedTo); err == nil {
|
||||||
d := cleanedTo
|
return os.ErrExist
|
||||||
if !f.IsDir() {
|
}
|
||||||
d = strings.TrimSuffix(d, path.Base(cleanedTo))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensure that the directory we're moving into exists correctly on the system.
|
if cleanedTo == fs.Path() {
|
||||||
|
return errors.New("attempting to rename into an invalid directory space")
|
||||||
|
}
|
||||||
|
|
||||||
|
d := strings.TrimSuffix(cleanedTo, path.Base(cleanedTo))
|
||||||
|
// Ensure that the directory we're moving into exists correctly on the system. Only do this if
|
||||||
|
// we're not at the root directory level.
|
||||||
|
if d != fs.Path() {
|
||||||
if mkerr := os.MkdirAll(d, 0644); mkerr != nil {
|
if mkerr := os.MkdirAll(d, 0644); mkerr != nil {
|
||||||
return errors.WithStack(mkerr)
|
return errors.Wrap(mkerr, "failed to create directory structure for file rename")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user