aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/storage/localstore.go
diff options
context:
space:
mode:
authorAnton Evangelatov <anton.evangelatov@gmail.com>2018-08-14 22:03:56 +0800
committerBalint Gabor <balint.g@gmail.com>2018-08-14 22:03:56 +0800
commit97887d98da703a31040bceee13bce9ee77fca673 (patch)
treeffc9a8a6fba087b26d33c0ef6c939a19aaaad8c9 /swarm/storage/localstore.go
parent8a040de60bd6b740ebe87cd8e1fe6bfdb6635d2f (diff)
downloaddexon-97887d98da703a31040bceee13bce9ee77fca673.tar
dexon-97887d98da703a31040bceee13bce9ee77fca673.tar.gz
dexon-97887d98da703a31040bceee13bce9ee77fca673.tar.bz2
dexon-97887d98da703a31040bceee13bce9ee77fca673.tar.lz
dexon-97887d98da703a31040bceee13bce9ee77fca673.tar.xz
dexon-97887d98da703a31040bceee13bce9ee77fca673.tar.zst
dexon-97887d98da703a31040bceee13bce9ee77fca673.zip
swarm/network, swarm/storage: validate chunk size (#17397)
* swarm/network, swarm/storage: validate default chunk size * swarm/bmt, swarm/network, swarm/storage: update BMT hash initialisation * swarm/bmt: move segmentCount to tests * swarm/chunk: change chunk.DefaultSize to be untyped const * swarm/storage: add size validator * swarm/storage: add chunk size validation to localstore * swarm/storage: move validation from localstore to validator * swarm/storage: global chunk rules in MRU
Diffstat (limited to 'swarm/storage/localstore.go')
-rw-r--r--swarm/storage/localstore.go10
1 files changed, 3 insertions, 7 deletions
diff --git a/swarm/storage/localstore.go b/swarm/storage/localstore.go
index 096d150ae..9e3474979 100644
--- a/swarm/storage/localstore.go
+++ b/swarm/storage/localstore.go
@@ -98,20 +98,16 @@ func NewTestLocalStoreForAddr(params *LocalStoreParams) (*LocalStore, error) {
// After the LDBStore.Put, it is ensured that the MemStore
// contains the chunk with the same data, but nil ReqC channel.
func (ls *LocalStore) Put(ctx context.Context, chunk *Chunk) {
- if l := len(chunk.SData); l < 9 {
- log.Debug("incomplete chunk data", "addr", chunk.Addr, "length", l)
- chunk.SetErrored(ErrChunkInvalid)
- chunk.markAsStored()
- return
- }
valid := true
+ // ls.Validators contains a list of one validator per chunk type.
+ // if one validator succeeds, then the chunk is valid
for _, v := range ls.Validators {
if valid = v.Validate(chunk.Addr, chunk.SData); valid {
break
}
}
if !valid {
- log.Trace("invalid content address", "addr", chunk.Addr)
+ log.Trace("invalid chunk", "addr", chunk.Addr, "len", len(chunk.SData))
chunk.SetErrored(ErrChunkInvalid)
chunk.markAsStored()
return