aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/filer/filechunk_group.go4
-rw-r--r--weed/mount/filehandle_read.go5
2 files changed, 8 insertions, 1 deletions
diff --git a/weed/filer/filechunk_group.go b/weed/filer/filechunk_group.go
index dbeb54ce8..ebda62845 100644
--- a/weed/filer/filechunk_group.go
+++ b/weed/filer/filechunk_group.go
@@ -1,6 +1,7 @@
package filer
import (
+ "io"
"sync"
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
@@ -44,6 +45,9 @@ func (group *ChunkGroup) AddChunk(chunk *filer_pb.FileChunk) error {
}
func (group *ChunkGroup) ReadDataAt(fileSize int64, buff []byte, offset int64) (n int, tsNs int64, err error) {
+ if offset >= fileSize {
+ return 0, 0, io.EOF
+ }
group.sectionsLock.RLock()
defer group.sectionsLock.RUnlock()
diff --git a/weed/mount/filehandle_read.go b/weed/mount/filehandle_read.go
index 3c315b1c4..faf99952f 100644
--- a/weed/mount/filehandle_read.go
+++ b/weed/mount/filehandle_read.go
@@ -47,6 +47,9 @@ func (fh *FileHandle) readFromChunks(buff []byte, offset int64) (int64, int64, e
if fileSize == 0 {
glog.V(1).Infof("empty fh %v", fileFullPath)
return 0, 0, io.EOF
+ } else if offset >= fileSize {
+ glog.V(1).Infof("invalid read, fileSize %d, offset %d for %s", fileSize, offset, fileFullPath)
+ return 0, 0, io.EOF
}
if offset < int64(len(entry.Content)) {
@@ -66,7 +69,7 @@ func (fh *FileHandle) readFromChunks(buff []byte, offset int64) (int64, int64, e
return int64(totalRead), ts, err
}
-func (fh *FileHandle) downloadRemoteEntry(entry *LockedEntry) (error) {
+func (fh *FileHandle) downloadRemoteEntry(entry *LockedEntry) error {
fileFullPath := fh.FullPath()
dir, _ := fileFullPath.DirAndName()