add a nil check for attributes

just defensive code

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
Nicola Murino 2024-02-17 20:08:07 +01:00
parent 0d4e4175a8
commit 162376fd74
No known key found for this signature in database
GPG key ID: 935D2952DEC4EECF

View file

@ -353,23 +353,25 @@ func (c *Connection) handleSFTPSetstat(request *sftp.Request) error {
attrs := common.StatAttributes{
Flags: 0,
}
if request.AttrFlags().Permissions {
attrs.Flags |= common.StatAttrPerms
attrs.Mode = request.Attributes().FileMode()
}
if request.AttrFlags().UidGid {
attrs.Flags |= common.StatAttrUIDGID
attrs.UID = int(request.Attributes().UID)
attrs.GID = int(request.Attributes().GID)
}
if request.AttrFlags().Acmodtime {
attrs.Flags |= common.StatAttrTimes
attrs.Atime = time.Unix(int64(request.Attributes().Atime), 0)
attrs.Mtime = time.Unix(int64(request.Attributes().Mtime), 0)
}
if request.AttrFlags().Size {
attrs.Flags |= common.StatAttrSize
attrs.Size = int64(request.Attributes().Size)
if request.Attributes() != nil {
if request.AttrFlags().Permissions {
attrs.Flags |= common.StatAttrPerms
attrs.Mode = request.Attributes().FileMode()
}
if request.AttrFlags().UidGid {
attrs.Flags |= common.StatAttrUIDGID
attrs.UID = int(request.Attributes().UID)
attrs.GID = int(request.Attributes().GID)
}
if request.AttrFlags().Acmodtime {
attrs.Flags |= common.StatAttrTimes
attrs.Atime = time.Unix(int64(request.Attributes().Atime), 0)
attrs.Mtime = time.Unix(int64(request.Attributes().Mtime), 0)
}
if request.AttrFlags().Size {
attrs.Flags |= common.StatAttrSize
attrs.Size = int64(request.Attributes().Size)
}
}
return c.SetStat(request.Filepath, &attrs)