提交 459a4b3d 作者: Kevin Atkinson 提交者: Jeromy

Move block verification into readDataObj.

License: MIT
Signed-off-by: 's avatarKevin Atkinson <k@kevina.org>
上级 8fce0c41
......@@ -104,24 +104,16 @@ func (f *FileManager) Get(c *cid.Cid) (blocks.Block, error) {
return nil, err
}
out, err := f.readDataObj(&dobj)
out, err := f.readDataObj(c, &dobj)
if err != nil {
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) {
// reads and verifies the block
func (f *FileManager) readDataObj(c *cid.Cid, d *pb.DataObj) ([]byte, error) {
p := filepath.FromSlash(d.GetFilePath())
abspath := filepath.Join(f.root, p)
......@@ -142,6 +134,15 @@ func (f *FileManager) readDataObj(d *pb.DataObj) ([]byte, error) {
return nil, &CorruptReferenceError{err}
}
outcid, err := c.Prefix().Sum(outbuf)
if err != nil {
return nil, err
}
if !c.Equals(outcid) {
return nil, &CorruptReferenceError{fmt.Errorf("data in file did not match. %s offset %d", d.GetFilePath(), d.GetOffset())}
}
return outbuf, nil
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论