diff options
| author | Shulhan <ms@kilabit.info> | 2023-12-17 01:00:56 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2023-12-17 01:00:56 +0700 |
| commit | 0d9f916fa0d55c4e7d8044a2b17850791e84041a (patch) | |
| tree | eb7879fd80c6747e3efaab20a3b32242d4d19f04 /lib/ssh/sftp | |
| parent | 7f7fd86cf1f6fb6841b65a53f984f32a857dc91e (diff) | |
| download | pakakeh.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.
Diffstat (limited to 'lib/ssh/sftp')
| -rw-r--r-- | lib/ssh/sftp/file_attrs.go | 18 |
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 |
