diff --git a/archiver.go b/archiver.go index 39c8feaf6..85bddc2af 100644 --- a/archiver.go +++ b/archiver.go @@ -167,13 +167,13 @@ func (arch *Archiver) SaveFile(node *Node) error { buf := GetChunkBuf("blob single file") defer FreeChunkBuf("blob single file", buf) n, err := io.ReadFull(file, buf) - if err != nil && err != io.ErrUnexpectedEOF { - return err + if err != nil && err != io.ErrUnexpectedEOF && err != io.EOF { + return arrar.Annotate(err, "SaveFile() read small file") } blob, err := arch.ch.Save(backend.Data, buf[:n]) if err != nil { - return err + return arrar.Annotate(err, "SaveFile() save chunk") } arch.update(arch.SaveStats, Stats{Bytes: blob.Size}) @@ -195,7 +195,7 @@ func (arch *Archiver) SaveFile(node *Node) error { if err != nil { FreeChunkBuf("blob chunker", buf) - return err + return arrar.Annotate(err, "SaveFile() chunker.Next()") } // acquire token, start goroutine to save chunk @@ -231,7 +231,7 @@ func (arch *Archiver) SaveFile(node *Node) error { arch.bl.Insert(blob) } - return err + return nil } func (arch *Archiver) loadTree(dir string) (*Tree, error) { diff --git a/key.go b/key.go index bb2abb49d..1acdca08f 100644 --- a/key.go +++ b/key.go @@ -374,7 +374,7 @@ func (k *Key) Encrypt(ciphertext, plaintext []byte) (int, error) { // IV || Ciphertext || HMAC. func (k *Key) decrypt(ks *keys, ciphertext []byte) ([]byte, error) { // check for plausible length - if len(ciphertext) <= ivSize+hmacSize { + if len(ciphertext) < ivSize+hmacSize { panic("trying to decryipt invalid data: ciphertext too small") } diff --git a/test/fake-data.tar.gz b/test/fake-data.tar.gz index 58502ab4f..337c18fd9 100644 Binary files a/test/fake-data.tar.gz and b/test/fake-data.tar.gz differ