Skip to content

Commit

Permalink
Merge pull request #6847 from ipfs/fix/6765
Browse files Browse the repository at this point in the history
fix: fix a potential out of bounds issue in fuse
  • Loading branch information
Stebalien authored Jan 29, 2020
2 parents e8f7f0a + 41aaf74 commit 8e0f92b
Showing 1 changed file with 6 additions and 11 deletions.
17 changes: 6 additions & 11 deletions fuse/readonly/readonly_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -257,13 +257,15 @@ func (s *Node) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadR
if err != nil {
return err
}

buf := resp.Data[:min(req.Size, int(int64(r.Size())-req.Offset))]
// Data has a capacity of Size
buf := resp.Data[:int(req.Size)]
n, err := io.ReadFull(r, buf)
if err != nil && err != io.EOF {
resp.Data = buf[:n]
switch err {
case nil, io.EOF, io.ErrUnexpectedEOF:
default:
return err
}
resp.Data = resp.Data[:n]
lm["res_size"] = n
return nil // may be non-nil / not succeeded
}
Expand All @@ -287,10 +289,3 @@ type roNode interface {
}

var _ roNode = (*Node)(nil)

func min(a, b int) int {
if a < b {
return a
}
return b
}

0 comments on commit 8e0f92b

Please sign in to comment.