mirror of
https://github.com/restic/restic.git
synced 2026-10-11 12:37:13 +00:00
Add more checks befor decrypting data
This commit is contained in:
1 parent
26cd6c5372
commit
4ab3d51996
3 files changed
+21
-2
No files matched your search
+9
-1
@@ -24,6 +24,8 @@ const (
|
||||
versionFileName = "version"
|
||||
)
|
||||
|
||||
var ErrWrongData = errors.New("wrong data returned by backend, checksum does not match")
|
||||
|
||||
type Local struct {
|
||||
p string
|
||||
ver uint
|
||||
@@ -218,7 +220,8 @@ func (b *Local) filename(t Type, id ID) string {
|
||||
return filepath.Join(b.dir(t), id.String())
|
||||
}
|
||||
|
||||
// Get returns the content stored under the given ID.
|
||||
// Get returns the content stored under the given ID. If the data doesn't match
|
||||
// the requested ID, ErrWrongData is returned.
|
||||
func (b *Local) Get(t Type, id ID) ([]byte, error) {
|
||||
// try to open file
|
||||
file, err := os.Open(b.filename(t, id))
|
||||
@@ -233,6 +236,11 @@ func (b *Local) Get(t Type, id ID) ([]byte, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// check id
|
||||
if !Hash(buf).Equal(id) {
|
||||
return nil, ErrWrongData
|
||||
}
|
||||
|
||||
return buf, nil
|
||||
}
|
||||
|
||||
|
||||
+7
-1
@@ -292,7 +292,8 @@ func (r *SFTP) filename(t Type, id ID) string {
|
||||
return filepath.Join(r.dir(t), id.String())
|
||||
}
|
||||
|
||||
// Get returns the content stored under the given ID.
|
||||
// Get returns the content stored under the given ID. If the data doesn't match
|
||||
// the requested ID, ErrWrongData is returned.
|
||||
func (r *SFTP) Get(t Type, id ID) ([]byte, error) {
|
||||
// try to open file
|
||||
file, err := r.c.Open(r.filename(t, id))
|
||||
@@ -307,6 +308,11 @@ func (r *SFTP) Get(t Type, id ID) ([]byte, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// check id
|
||||
if !Hash(buf).Equal(id) {
|
||||
return nil, ErrWrongData
|
||||
}
|
||||
|
||||
return buf, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user