log: Only chmod if permission bits differ

Follow-up to #6314 and https://caddy.community/t/caddy-2-9-0-breaking-change/27576/11
This commit is contained in:
Matthew Holt 2025-01-02 15:58:22 -07:00
parent 1bd567d7ad
commit dec0495ec4
No known key found for this signature in database
GPG Key ID: 2A349DD577D586A5

View File

@ -173,10 +173,18 @@ func (fw FileWriter) OpenWriter() (io.WriteCloser, error) {
return nil, err
}
f_tmp.Close()
// ensure already existing files have the right mode,
// since OpenFile will not set the mode in such case.
if err = os.Chmod(fw.Filename, os.FileMode(fw.Mode)); err != nil {
return nil, err
// only chmod if the mode needs to be changed, however
info, err := f_tmp.Stat()
if err == nil {
desiredMode := os.FileMode(fw.Mode)
if info.Mode()&os.ModePerm != desiredMode&os.ModePerm {
if err = os.Chmod(fw.Filename, desiredMode); err != nil {
return nil, err
}
}
}
return &lumberjack.Logger{