From c0b3021494b32d117e0225f04788b45f16a0997d Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sun, 30 Nov 2014 16:06:37 +0100 Subject: [PATCH] Correctly deal with empty files --- archiver.go | 10 +++++----- key.go | 2 +- test/fake-data.tar.gz | Bin 177701 -> 177734 bytes 3 files changed, 6 insertions(+), 6 deletions(-) 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 58502ab4f59808aad2deb34af0d6ca537ec8bf0c..337c18fd9d54d427fcda76a39fae9c73a881d7fb 100644 GIT binary patch delta 6492 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 delta 6207 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