| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package far |
| |
| import ( |
| "os" |
| "testing" |
| ) |
| |
| var ( |
| invalidTestFiles = []string{ |
| "invalid-magic-bytes.far", |
| "index-entries-length-not-a-multiple-of-24-bytes.far", |
| "directory-names-index-entry-before-directory-index-entry.far", |
| "two-directory-index-entries.far", |
| "two-directory-names-index-entries.far", |
| "duplicate-index-entries-of-unknown-type.far", |
| "no-directory-index-entry.far", |
| "no-directory-names-index-entry.far", |
| "directory-chunk-length-not-a-multiple-of-32-bytes.far", |
| "directory-chunk-not-tightly-packed.far", |
| "path-data-offset-too-large.far", |
| "path-data-length-too-large.far", |
| "directory-entries-not-sorted.far", |
| "directory-entries-with-same-name.far", |
| "directory-names-chunk-length-not-a-multiple-of-8-bytes.far", |
| "directory-names-chunk-not-tightly-packed.far", |
| "directory-names-chunk-before-directory-chunk.far", |
| "directory-names-chunk-overlaps-directory-chunk.far", |
| "zero-length-name.far", |
| "name-with-null-character.far", |
| "name-with-leading-slash.far", |
| "name-with-trailing-slash.far", |
| "name-with-empty-segment.far", |
| "name-with-dot-segment.far", |
| "name-with-dot-dot-segment.far", |
| "content-chunk-starts-early.far", |
| "content-chunk-starts-late.far", |
| "second-content-chunk-starts-early.far", |
| "second-content-chunk-starts-late.far", |
| "content-chunk-not-zero-padded.far", |
| "content-chunk-overlap.far", |
| "content-chunk-not-tightly-packed.far", |
| "content-chunk-offset-past-end-of-file.far", |
| } |
| ) |
| |
| func TestInvalidFars(t *testing.T) { |
| for _, fn := range invalidTestFiles { |
| f, err := os.Open("/pkg/data/invalid-fars/" + fn) |
| if err != nil { |
| t.Errorf("cannot open test file: %v", err) |
| continue |
| } |
| _, err = NewReader(f) |
| if err == nil { |
| t.Errorf("invalid archive %q passed validation", fn) |
| } |
| } |
| } |