From 6d294939a66d74418a36825f1936b4fe31f3a65e Mon Sep 17 00:00:00 2001 From: jbj Date: Tue, 1 Oct 2002 19:17:55 +0000 Subject: [PATCH] Apply patches from file-3.37-8. CVS patchset: 5744 CVS date: 2002/10/01 19:17:55 --- file/Localstuff | 9 +++++ file/Magdir/elf | 118 ++++++++++++++++++++++++++++++++++++-------------------- file/file.c | 3 +- file/magic.mime | 10 +++-- file/readelf.c | 6 +-- 5 files changed, 98 insertions(+), 48 deletions(-) diff --git a/file/Localstuff b/file/Localstuff index bd008c1..2b5ca8f 100644 --- a/file/Localstuff +++ b/file/Localstuff @@ -5,3 +5,12 @@ # Id: Localstuff,v 1.3 1995/01/21 21:09:00 christos Exp # Add any locally observed files here. Remember: # text if readable, executable if runnable binary, data if unreadable. + +# XXX promoted from tex so that *.tfm is not mis-identified as mc68k file. +# There is no way to detect TeX Font Metric (*.tfm) files without +# breaking them apart and reading the data. The following patterns +# match most *.tfm files generated by METAFONT or afm2tfm. +2 string \000\021 TeX font metric data +>33 string >\0 (%s) +2 string \000\022 TeX font metric data +>33 string >\0 (%s) diff --git a/file/Magdir/elf b/file/Magdir/elf index 53a6bc9..182ee85 100644 --- a/file/Magdir/elf +++ b/file/Magdir/elf @@ -5,38 +5,45 @@ # We have to check the byte order flag to see what byte order all the # other stuff in the header is in. # -# MIPS R3000 may also be for MIPS R2000. # What're the correct byte orders for the nCUBE and the Fujitsu VPP500? # # updated by Daniel Quinlan (quinlan@yggdrasil.com) 0 string \177ELF ELF >4 byte 0 invalid class >4 byte 1 32-bit -# only for MIPS +# only for MIPS - in the future, the ABI field of e_flags should be used. >>18 beshort 8 >>18 beshort 10 >>>36 belong &0x20 N32 >4 byte 2 64-bit >5 byte 0 invalid byte order >5 byte 1 LSB -# only for MIPS R3000_BE +# The official e_machine number for MIPS is now #8, regardless of endianness. +# The second number (#10) will be deprecated later. For now, we still +# say something if #10 is encountered, but only gory details for #8. >>18 leshort 8 # only for 32-bit >>>4 byte 1 ->>>>36 lelong&0xf0000000 0x00000000 mips-1 ->>>>36 lelong&0xf0000000 0x10000000 mips-2 ->>>>36 lelong&0xf0000000 0x20000000 mips-3 ->>>>36 lelong&0xf0000000 0x30000000 mips-4 ->>>>36 lelong&0xf0000000 0x40000000 mips-5 ->>>>36 lelong&0xf0000000 0x50000000 mips-6 +>>>>36 lelong&0xf0000000 0x00000000 MIPS-I +>>>>36 lelong&0xf0000000 0x10000000 MIPS-II +>>>>36 lelong&0xf0000000 0x20000000 MIPS-III +>>>>36 lelong&0xf0000000 0x30000000 MIPS-IV +>>>>36 lelong&0xf0000000 0x40000000 MIPS-V +>>>>36 lelong&0xf0000000 0x60000000 MIPS32 +>>>>36 lelong&0xf0000000 0x70000000 MIPS64 +>>>>36 lelong&0xf0000000 0x80000000 MIPS32 rel2 +>>>>36 lelong&0xf0000000 0x90000000 MIPS64 rel2 # only for 64-bit >>>4 byte 2 ->>>>48 lelong&0xf0000000 0x00000000 mips-1 ->>>>48 lelong&0xf0000000 0x10000000 mips-2 ->>>>48 lelong&0xf0000000 0x20000000 mips-3 ->>>>48 lelong&0xf0000000 0x30000000 mips-4 ->>>>48 lelong&0xf0000000 0x40000000 mips-5 ->>>>48 lelong&0xf0000000 0x50000000 mips-6 +>>>>48 lelong&0xf0000000 0x00000000 MIPS-I +>>>>48 lelong&0xf0000000 0x10000000 MIPS-II +>>>>48 lelong&0xf0000000 0x20000000 MIPS-III +>>>>48 lelong&0xf0000000 0x30000000 MIPS-IV +>>>>48 lelong&0xf0000000 0x40000000 MIPS-V +>>>>48 lelong&0xf0000000 0x60000000 MIPS32 +>>>>48 lelong&0xf0000000 0x70000000 MIPS64 +>>>>48 lelong&0xf0000000 0x80000000 MIPS32 rel2 +>>>>48 lelong&0xf0000000 0x90000000 MIPS64 rel2 >>16 leshort 0 no file type, >>16 leshort 1 relocatable, >>16 leshort 2 executable, @@ -44,21 +51,24 @@ # Core handling from Peter Tobias # corrections by Christian 'Dr. Disk' Hechelmann >>16 leshort 4 core file ->>>(0x38+0xcc) string >\0 of '%s' ->>>(0x38+0x10) lelong >0 (signal %d), +# Core file detection is not reliable. +#>>>(0x38+0xcc) string >\0 of '%s' +#>>>(0x38+0x10) lelong >0 (signal %d), >>16 leshort &0xff00 processor-specific, >>18 leshort 0 no machine, >>18 leshort 1 AT&T WE32100 - invalid byte order, >>18 leshort 2 SPARC - invalid byte order, >>18 leshort 3 Intel 80386, ->>18 leshort 4 Motorola 68000 - invalid byte order, +>>18 leshort 4 Motorola +>>>36 lelong &0x01000000 68000 - invalid byte order, +>>>36 lelong &0x00810000 CPU32 - invalid byte order, +>>>36 lelong 0 68020 - invalid byte order, >>18 leshort 5 Motorola 88000 - invalid byte order, >>18 leshort 6 Intel 80486, >>18 leshort 7 Intel 80860, -# "officially" big endian, but binutils bfd only emits magic #8 for MIPS. ->>18 leshort 8 MIPS R3000_LE [bfd bug], +>>18 leshort 8 MIPS, >>18 leshort 9 Amdahl - invalid byte order, ->>18 leshort 10 MIPS R3000_LE, +>>18 leshort 10 MIPS (deprecated), >>18 leshort 11 RS6000 - invalid byte order, >>18 leshort 15 PA-RISC - invalid byte order, >>>50 leshort 0x0214 2.0 @@ -81,7 +91,7 @@ >>18 leshort 47 Hitachi H8/300H, >>18 leshort 48 Hitachi H8S, >>18 leshort 49 Hitachi H8/500, ->>18 leshort 50 IA-64 (Intel 64 bit architecture) +>>18 leshort 50 IA-64, >>18 leshort 51 Stanford MIPS-X, >>18 leshort 52 Motorola Coldfire, >>18 leshort 53 Motorola M68HC12, @@ -91,44 +101,70 @@ >>20 lelong 0 invalid version >>20 lelong 1 version 1 >>36 lelong 1 MathCoPro/FPU/MAU Required +>8 string >\0 (%s) +>8 string \0 +>>7 byte 0 (SYSV) +>>7 byte 1 (HP-UX) +>>7 byte 2 (NetBSD) +>>7 byte 3 (GNU/Linux) +>>7 byte 4 (GNU/Hurd) +>>7 byte 5 (86Open) +>>7 byte 6 (Solaris) +>>7 byte 7 (Monterey) +>>7 byte 8 (IRIX) +>>7 byte 9 (FreeBSD) +>>7 byte 10 (Tru64) +>>7 byte 11 (Novell Modesto) +>>7 byte 12 (OpenBSD) +>>7 byte 97 (ARM) +>>7 byte 255 (embedded) >5 byte 2 MSB -# only for MIPS R3000_BE +# only for MIPS - see comment in little-endian section above. >>18 beshort 8 # only for 32-bit >>>4 byte 1 ->>>>36 belong&0xf0000000 0x00000000 mips-1 ->>>>36 belong&0xf0000000 0x10000000 mips-2 ->>>>36 belong&0xf0000000 0x20000000 mips-3 ->>>>36 belong&0xf0000000 0x30000000 mips-4 ->>>>36 belong&0xf0000000 0x40000000 mips-5 ->>>>36 belong&0xf0000000 0x50000000 mips-6 +>>>>36 belong&0xf0000000 0x00000000 MIPS-I +>>>>36 belong&0xf0000000 0x10000000 MIPS-II +>>>>36 belong&0xf0000000 0x20000000 MIPS-III +>>>>36 belong&0xf0000000 0x30000000 MIPS-IV +>>>>36 belong&0xf0000000 0x40000000 MIPS-V +>>>>36 belong&0xf0000000 0x60000000 MIPS32 +>>>>36 belong&0xf0000000 0x70000000 MIPS64 +>>>>36 belong&0xf0000000 0x80000000 MIPS32 rel2 +>>>>36 belong&0xf0000000 0x90000000 MIPS64 rel2 # only for 64-bit >>>4 byte 2 ->>>>48 belong&0xf0000000 0x00000000 mips-1 ->>>>48 belong&0xf0000000 0x10000000 mips-2 ->>>>48 belong&0xf0000000 0x20000000 mips-3 ->>>>48 belong&0xf0000000 0x30000000 mips-4 ->>>>48 belong&0xf0000000 0x40000000 mips-5 ->>>>48 belong&0xf0000000 0x50000000 mips-6 +>>>>48 belong&0xf0000000 0x00000000 MIPS-I +>>>>48 belong&0xf0000000 0x10000000 MIPS-II +>>>>48 belong&0xf0000000 0x20000000 MIPS-III +>>>>48 belong&0xf0000000 0x30000000 MIPS-IV +>>>>48 belong&0xf0000000 0x40000000 MIPS-V +>>>>48 belong&0xf0000000 0x60000000 MIPS32 +>>>>48 belong&0xf0000000 0x70000000 MIPS64 +>>>>48 belong&0xf0000000 0x80000000 MIPS32 rel2 +>>>>48 belong&0xf0000000 0x90000000 MIPS64 rel2 >>16 beshort 0 no file type, >>16 beshort 1 relocatable, >>16 beshort 2 executable, >>16 beshort 3 shared object, >>16 beshort 4 core file, ->>>(0x38+0xcc) string >\0 of '%s' ->>>(0x38+0x10) belong >0 (signal %d), +#>>>(0x38+0xcc) string >\0 of '%s' +#>>>(0x38+0x10) belong >0 (signal %d), >>16 beshort &0xff00 processor-specific, >>18 beshort 0 no machine, >>18 beshort 1 AT&T WE32100, >>18 beshort 2 SPARC, >>18 beshort 3 Intel 80386 - invalid byte order, ->>18 beshort 4 Motorola 68000, +>>18 beshort 4 Motorola +>>>36 belong &0x01000000 68000, +>>>36 belong &0x00810000 CPU32, +>>>36 belong 0 68020, >>18 beshort 5 Motorola 88000, >>18 beshort 6 Intel 80486 - invalid byte order, >>18 beshort 7 Intel 80860, ->>18 beshort 8 MIPS R3000_BE, +>>18 beshort 8 MIPS, >>18 beshort 9 Amdahl, ->>18 beshort 10 MIPS R3000_LE - invalid byte order, +>>18 beshort 10 MIPS (deprecated), >>18 beshort 11 RS6000, >>18 beshort 15 PA-RISC >>>50 beshort 0x0214 2.0 @@ -158,7 +194,7 @@ >>18 beshort 47 Hitachi H8/300H, >>18 beshort 48 Hitachi H8S, >>18 beshort 49 Hitachi H8/500, ->>18 beshort 50 Intel Merced Processor, +>>18 beshort 50 IA-64, >>18 beshort 51 Stanford MIPS-X, >>18 beshort 52 Motorola Coldfire, >>18 beshort 53 Motorola M68HC12, diff --git a/file/file.c b/file/file.c index 590c048..c1e1607 100644 --- a/file/file.c +++ b/file/file.c @@ -408,7 +408,8 @@ main(int argc, char **argv) /*@switchbreak@*/ break; case 'i': iflag++; - if ((mime = malloc(strlen(magicfile) + 6)) != NULL) { + mime = malloc(strlen(magicfile) + sizeof(".mime")); + if (mime != NULL) { (void)strcpy(mime, magicfile); (void)strcat(mime, ".mime"); magicfile = mime; diff --git a/file/magic.mime b/file/magic.mime index 836942a..7bec3fd 100644 --- a/file/magic.mime +++ b/file/magic.mime @@ -94,10 +94,9 @@ 0 belong 0x2e7261fd application/x-realaudio # MPEG Layer 3 sound files -# Modified the 11/20/97 at 15:59:04 by Christophe Prud'homme -0 belong 0xfffb audio/x-mp3 +0 beshort &0xffe0 audio/mpeg #MP3 with ID3 tag -0 string ID3 audio/x-mp3 +0 string ID3 audio/mpeg # Ogg/Vorbis 0 string OggS audio/x-ogg @@ -487,6 +486,8 @@ 0 string MOVI video/sgi 4 string moov video/quicktime moov 4 string mdat video/quicktime mdat +# MNG +0 string \x8aMNG video/x-mng # The contributor claims: # I couldn't find a real magic number for these, however, this # -appears- to work. Note that it might catch other files, too, @@ -541,3 +542,6 @@ #PNG Image Format 0 string \x89PNG image/png + +# MNG Video Format, +0 string \x8aMNG video/x-mng diff --git a/file/readelf.c b/file/readelf.c index 23881dc..4e0fb74 100644 --- a/file/readelf.c +++ b/file/readelf.c @@ -550,7 +550,7 @@ tryelf(int fd, unsigned char *buf, int nbytes) return; - cls = buf[4]; + cls = buf[EI_CLASS]; if (cls == ELFCLASS32) { Elf32_Ehdr elfhdr; @@ -560,7 +560,7 @@ tryelf(int fd, unsigned char *buf, int nbytes) u.l = 1; (void) memcpy(&elfhdr, buf, sizeof elfhdr); - swap = (u.c[sizeof(int32_t) - 1] + 1) != elfhdr.e_ident[5]; + swap = (u.c[sizeof(int32_t) - 1] + 1) != elfhdr.e_ident[EI_DATA]; if (getu16(swap, elfhdr.e_type) == ET_CORE) #ifdef ELFCORE @@ -597,7 +597,7 @@ tryelf(int fd, unsigned char *buf, int nbytes) u.l = 1; (void) memcpy(&elfhdr, buf, sizeof elfhdr); - swap = (u.c[sizeof(int32_t) - 1] + 1) != elfhdr.e_ident[5]; + swap = (u.c[sizeof(int32_t) - 1] + 1) != elfhdr.e_ident[EI_DATA]; if (getu16(swap, elfhdr.e_type) == ET_CORE) #ifdef ELFCORE -- 2.7.4