summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2023-12-17 01:00:56 +0700
committerShulhan <ms@kilabit.info>2023-12-17 01:00:56 +0700
commit0d9f916fa0d55c4e7d8044a2b17850791e84041a (patch)
treeeb7879fd80c6747e3efaab20a3b32242d4d19f04
parent7f7fd86cf1f6fb6841b65a53f984f32a857dc91e (diff)
downloadpakakeh.go-0d9f916fa0d55c4e7d8044a2b17850791e84041a.tar.xz
ssh/sftp: use fixed slice length when converting in unpackFileAttrs
This is to make sure that the passed value is in the correct, expected size.
-rw-r--r--lib/ssh/sftp/file_attrs.go18
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/ssh/sftp/file_attrs.go b/lib/ssh/sftp/file_attrs.go
index 8dc5c343..65fb79ca 100644
--- a/lib/ssh/sftp/file_attrs.go
+++ b/lib/ssh/sftp/file_attrs.go
@@ -80,40 +80,40 @@ func unpackFileAttrs(payload []byte) (fa *FileAttrs, length int) {
length += 4
if fa.flags&attrSize != 0 {
- fa.size = binary.BigEndian.Uint64(payload)
+ fa.size = binary.BigEndian.Uint64(payload[:8])
payload = payload[8:]
length += 8
}
if fa.flags&attrUIDGID != 0 {
- fa.uid = binary.BigEndian.Uint32(payload)
+ fa.uid = binary.BigEndian.Uint32(payload[:4])
payload = payload[4:]
length += 4
- fa.gid = binary.BigEndian.Uint32(payload)
+ fa.gid = binary.BigEndian.Uint32(payload[:4])
payload = payload[4:]
length += 4
}
if fa.flags&attrPermissions != 0 {
- fa.permissions = binary.BigEndian.Uint32(payload)
+ fa.permissions = binary.BigEndian.Uint32(payload[:4])
payload = payload[4:]
length += 4
fa.updateFsmode()
}
if fa.flags&attrAcModtime != 0 {
- fa.atime = binary.BigEndian.Uint32(payload)
+ fa.atime = binary.BigEndian.Uint32(payload[:4])
payload = payload[4:]
length += 4
- fa.mtime = binary.BigEndian.Uint32(payload)
+ fa.mtime = binary.BigEndian.Uint32(payload[:4])
payload = payload[4:]
length += 4
}
if fa.flags&attrExtended != 0 {
- n := binary.BigEndian.Uint32(payload)
+ n := binary.BigEndian.Uint32(payload[:4])
payload = payload[4:]
length += 4
fa.exts = make(extensions, n)
for x := uint32(0); x < n; x++ {
- size := binary.BigEndian.Uint32(payload)
+ size := binary.BigEndian.Uint32(payload[:4])
payload = payload[4:]
length += 4
@@ -121,7 +121,7 @@ func unpackFileAttrs(payload []byte) (fa *FileAttrs, length int) {
payload = payload[size:]
length += int(size)
- size = binary.BigEndian.Uint32(payload)
+ size = binary.BigEndian.Uint32(payload[:4])
payload = payload[4:]
length += 4