Browse Source

add a nil check for attributes

just defensive code

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
Nicola Murino 1 year ago
parent
commit
162376fd74
1 changed files with 19 additions and 17 deletions
  1. 19 17
      internal/sftpd/handler.go

+ 19 - 17
internal/sftpd/handler.go

@@ -353,23 +353,25 @@ func (c *Connection) handleSFTPSetstat(request *sftp.Request) error {
 	attrs := common.StatAttributes{
 	attrs := common.StatAttributes{
 		Flags: 0,
 		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)
 	return c.SetStat(request.Filepath, &attrs)