提交 8fce0c41 作者: Jeromy

validate data read from fsrefstore

License: MIT
Signed-off-by: 's avatarJeromy <jeromyj@gmail.com>
上级 c18ec982
......@@ -109,11 +109,21 @@ func (f *FileManager) Get(c *cid.Cid) (blocks.Block, error) {
return nil, err
}
outcid, err := c.Prefix().Sum(out)
if err != nil {
return nil, err
}
if !c.Equals(outcid) {
return nil, &CorruptReferenceError{fmt.Errorf("data in file did not match. %s offset %d", dobj.GetFilePath(), dobj.GetOffset())}
}
return blocks.NewBlockWithCid(out, c)
}
func (f *FileManager) readDataObj(d *pb.DataObj) ([]byte, error) {
abspath := filepath.Join(f.root, d.GetFilePath())
p := filepath.FromSlash(d.GetFilePath())
abspath := filepath.Join(f.root, p)
fi, err := os.Open(abspath)
if err != nil {
......@@ -162,7 +172,7 @@ func (f *FileManager) putTo(b *posinfo.FilestoreNode, to putter) error {
return err
}
dobj.FilePath = proto.String(p)
dobj.FilePath = proto.String(filepath.ToSlash(p))
dobj.Offset = proto.Uint64(b.PosInfo.Offset)
dobj.Size_ = proto.Uint64(uint64(len(b.RawData())))
......
......@@ -23,11 +23,10 @@ var _ = fmt.Errorf
var _ = math.Inf
type DataObj struct {
FilePath *string `protobuf:"bytes,1,opt,name=FilePath" json:"FilePath,omitempty"`
Offset *uint64 `protobuf:"varint,2,opt,name=Offset" json:"Offset,omitempty"`
Size_ *uint64 `protobuf:"varint,3,opt,name=Size" json:"Size,omitempty"`
Modtime *float64 `protobuf:"fixed64,4,opt,name=Modtime" json:"Modtime,omitempty"`
XXX_unrecognized []byte `json:"-"`
FilePath *string `protobuf:"bytes,1,opt,name=FilePath" json:"FilePath,omitempty"`
Offset *uint64 `protobuf:"varint,2,opt,name=Offset" json:"Offset,omitempty"`
Size_ *uint64 `protobuf:"varint,3,opt,name=Size" json:"Size,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *DataObj) Reset() { *m = DataObj{} }
......@@ -55,13 +54,6 @@ func (m *DataObj) GetSize_() uint64 {
return 0
}
func (m *DataObj) GetModtime() float64 {
if m != nil && m.Modtime != nil {
return *m.Modtime
}
return 0
}
func init() {
proto.RegisterType((*DataObj)(nil), "datastore.pb.DataObj")
}
......@@ -4,6 +4,4 @@ message DataObj {
optional string FilePath = 1;
optional uint64 Offset = 2;
optional uint64 Size = 3;
optional double Modtime = 4;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论