@@ -65,7 +65,7 @@ func testArchive(t *testing.T, archivePath *paths.Path) {
6565}
6666
6767func TestZipSlipHardening (t * testing.T ) {
68- {
68+ t . Run ( "ZipTraversal" , func ( t * testing. T ) {
6969 logger := & LoggingFS {}
7070 extractor := extract.Extractor {FS : logger }
7171 data , err := os .Open ("testdata/zipslip/evil.zip" )
@@ -74,8 +74,9 @@ func TestZipSlipHardening(t *testing.T) {
7474 require .NoError (t , data .Close ())
7575 fmt .Print (logger )
7676 require .Empty (t , logger .Journal )
77- }
78- {
77+ })
78+
79+ t .Run ("TarTraversal" , func (t * testing.T ) {
7980 logger := & LoggingFS {}
8081 extractor := extract.Extractor {FS : logger }
8182 data , err := os .Open ("testdata/zipslip/evil.tar" )
@@ -84,9 +85,23 @@ func TestZipSlipHardening(t *testing.T) {
8485 require .NoError (t , data .Close ())
8586 fmt .Print (logger )
8687 require .Empty (t , logger .Journal )
87- }
88+ })
89+
90+ t .Run ("TarLinkTraversal" , func (t * testing.T ) {
91+ logger := & LoggingFS {}
92+ extractor := extract.Extractor {FS : logger }
93+ data , err := os .Open ("testdata/zipslip/evil-link-traversal.tar" )
94+ require .NoError (t , err )
95+ require .NoError (t , extractor .Tar (context .Background (), data , "/tmp/test" , nil ))
96+ require .NoError (t , data .Close ())
97+ fmt .Print (logger )
98+ require .Empty (t , logger .Journal )
99+ })
88100
89- if runtime .GOOS == "windows" {
101+ t .Run ("WindowsTarTraversal" , func (t * testing.T ) {
102+ if runtime .GOOS != "windows" {
103+ t .Skip ("Skipped on non-Windows host" )
104+ }
90105 logger := & LoggingFS {}
91106 extractor := extract.Extractor {FS : logger }
92107 data , err := os .Open ("testdata/zipslip/evil-win.tar" )
@@ -95,7 +110,7 @@ func TestZipSlipHardening(t *testing.T) {
95110 require .NoError (t , data .Close ())
96111 fmt .Print (logger )
97112 require .Empty (t , logger .Journal )
98- }
113+ })
99114}
100115
101116// MockDisk is a disk that chroots to a directory
0 commit comments