Skip to content

Commit a4e475a

Browse files
author
alexmullins
committed
add test for failing corrupt input into flate
1 parent 17e26cd commit a4e475a

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

README.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ hello.txt -> compress -> encrypt -> .zip -> decrypt -> decompress -> hello.txt
1111

1212
Roadmap
1313
==============================================================================
14-
Reading - Almost done (TODO: check for AE-2 and skip CRC).
14+
Reading - Working on it. Some bugs to work out (TODO: check for AE-2 and skip CRC).
1515
Writing - Not started.
1616
Testing - Needs more.
1717

reader.go

+1
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ func decryptStream(ciphertext, key, iv []byte) io.Reader {
244244
return nil
245245
}
246246
stream := cipher.NewCTR(block, iv)
247+
// Not decrypting stream correctly if the number of bytes being read is >16
247248
reader := cipher.StreamReader{S: stream, R: bytes.NewReader(ciphertext)}
248249
return reader
249250
}

reader_test.go

+31-1
Original file line numberDiff line numberDiff line change
@@ -660,9 +660,39 @@ func TestHelloWorldAes(t *testing.T) {
660660
t.Errorf("Expected to open readcloser: %v", err)
661661
}
662662
defer rc.Close()
663-
io.Copy(&b, rc)
663+
if _, err := io.Copy(&b, rc); err != nil {
664+
t.Errorf("Expected to copy bytes to buffer: %v", err)
665+
}
664666
}
665667
if !bytes.Equal([]byte(expecting), b.Bytes()) {
666668
t.Errorf("Expected ending content to be %s instead of %s", expecting, b.Bytes())
667669
}
668670
}
671+
672+
func TestMacbethAct1(t *testing.T) {
673+
file := "macbeth-act1.zip"
674+
expecting := "Exeunt"
675+
var b bytes.Buffer
676+
r, err := OpenReader(filepath.Join("testdata", file))
677+
if err != nil {
678+
t.Errorf("Expected %s to open: %v", file, err)
679+
}
680+
defer r.Close()
681+
for _, f := range r.File {
682+
if !f.IsEncrypted() {
683+
t.Errorf("Expected %s to be encrypted.", f.Name)
684+
}
685+
f.SetPassword([]byte("golang"))
686+
rc, err := f.Open()
687+
if err != nil {
688+
t.Errorf("Expected to open readcloser: %v", err)
689+
}
690+
defer rc.Close()
691+
if _, err := io.Copy(&b, rc); err != nil {
692+
t.Errorf("Expected to copy bytes to buffer: %v", err)
693+
}
694+
}
695+
if !bytes.Contains(b.Bytes(), []byte(expecting)) {
696+
t.Errorf("Expected to find %s in the buffer %v", expecting, b.Bytes())
697+
}
698+
}

testdata/macbeth-act1.zip

9.82 KB
Binary file not shown.

0 commit comments

Comments
 (0)