diff options
| -rw-r--r-- | src/pkg/debug/macho/file.go | 4 | ||||
| -rw-r--r-- | src/pkg/debug/macho/file_test.go | 8 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/pkg/debug/macho/file.go b/src/pkg/debug/macho/file.go index 7c492ef52..018f71e14 100644 --- a/src/pkg/debug/macho/file.go +++ b/src/pkg/debug/macho/file.go @@ -167,7 +167,7 @@ func NewFile(r io.ReaderAt) (*File, os.Error) { // Read and decode Mach magic to determine byte order, size. // Magic32 and Magic64 differ only in the bottom bit. - var ident [4]uint8 + var ident [4]byte if _, err := r.ReadAt(&ident, 0); err != nil { return nil, err } @@ -180,6 +180,8 @@ func NewFile(r io.ReaderAt) (*File, os.Error) { case le &^ 1: f.ByteOrder = binary.LittleEndian f.Magic = le + default: + return nil, &FormatError{0, "invalid magic number", nil} } // Read entire file header. diff --git a/src/pkg/debug/macho/file_test.go b/src/pkg/debug/macho/file_test.go index d69e49cbf..d4f3fc19c 100644 --- a/src/pkg/debug/macho/file_test.go +++ b/src/pkg/debug/macho/file_test.go @@ -157,3 +157,11 @@ func TestOpen(t *testing.T) { } } + +func TestOpenFailure(t *testing.T) { + filename := "file.go" // not a Mach-O file + _, err := Open(filename) // don't crash + if err == nil { + t.Errorf("open %s: succeeded unexpectedly", filename) + } +} |
