Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package file for openSUSE:Factory checked in 
at 2026-04-02 17:40:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/file (Old)
 and      /work/SRC/openSUSE:Factory/.file.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "file"

Thu Apr  2 17:40:40 2026 rev:144 rq:1344081 version:5.47

Changes:
--------
--- /work/SRC/openSUSE:Factory/file/file.changes        2025-09-05 
21:43:09.392253765 +0200
+++ /work/SRC/openSUSE:Factory/.file.new.21863/file.changes     2026-04-02 
17:40:43.026235378 +0200
@@ -1,0 +2,53 @@
+Wed Apr  1 09:10:47 UTC 2026 - Dr. Werner Fink <[email protected]>
+
+- Add patch file-5.47-regression.dif (boo#1261199)
+  * Fix regression in detection of magics in a buffer
+
+-------------------------------------------------------------------
+Tue Mar 31 11:06:20 UTC 2026 - Dr. Werner Fink <[email protected]>
+
+- Add patch file-5.47-fdf.dif
+  * Use tabs instead of normal white spaces in description of %FDF
+
+-------------------------------------------------------------------
+Fri Mar 27 12:59:36 UTC 2026 - Dr. Werner Fink <[email protected]>
+
+- Port patches
+  * file-4.20-ssd.dif
+  * file-4.21-xcursor.dif
+  * file-5.19-clicfs.dif
+  * file-5.19-solv.dif
+  * file-5.19-zip2.0.dif
+  * file-5.28-btrfs-image.dif
+- Remove patches now upstream or solved by upstream
+  * file-4.20-xen.dif
+  * file-4.21-scribus.dif
+  * file-5.14-tex.dif
+  * file-5.19-cromfs.dif
+
+-------------------------------------------------------------------
+Fri Mar 27 11:38:17 UTC 2026 - Dr. Werner Fink <[email protected]>
+
+- Update to 5.47:
+  * Better multi-compound document identification by following the
+    order of the directories entries. (Thomas Ledoux)
+  * if stat fails, don't attempt to restore times (Steven Grubb)
+  * PR/622: Odd_Bloke: Handle negative offsets in file_buffer(),
+    when fd is not available.
+  * PR/655: jsummers: Obey str_flags in strings like we do for search
+    and regex
+  * PR/659: Pitzl: Apply MAGIC_CONTINUE to annotations; i.e. print
+    only the first, unless -k is specified.
+  * PR/592: allow + in format strings
+  * PR/592: signed operations should be done in signed context
+  * PR/578: jsummers: Don't crash on cygwin when tm_mon == -1
+  * PR/579: net147: Fix stack overrun.
+- Remove patches now upstream
+  * file-zipdata.patch
+  * boo1237209.patch
+  * file-seccomp.patch
+  * file-seccomp-ppc.patch
+  * file-5.46-tcgets2.patch
+- Port and rename patch file-5.46.dif which becomes now file-5.47.dif
+
+-------------------------------------------------------------------
--- /work/SRC/openSUSE:Factory/file/python-magic.changes        2024-08-13 
13:23:15.830295941 +0200
+++ /work/SRC/openSUSE:Factory/.file.new.21863/python-magic.changes     
2026-04-02 17:40:43.042236041 +0200
@@ -1,0 +2,5 @@
+Mon Mar 30 09:01:17 UTC 2026 - Dr. Werner Fink <[email protected]>
+
+- Replace the upstream tab with 8 white spaces in pyton file 
+
+-------------------------------------------------------------------

Old:
----
  boo1237209.patch
  file-4.20-xen.dif
  file-4.21-scribus.dif
  file-5.14-tex.dif
  file-5.19-cromfs.dif
  file-5.46-tcgets2.patch
  file-5.46.dif
  file-5.46.tar.gz
  file-5.46.tar.gz.asc
  file-seccomp-ppc.patch
  file-seccomp.patch
  file-zipdata.patch

New:
----
  file-5.47-fdf.dif
  file-5.47-regression.dif
  file-5.47.dif
  file-5.47.tar.gz
  file-5.47.tar.gz.asc

----------(Old B)----------
  Old:/work/SRC/openSUSE:Factory/.file.new.21863/file.changes-  * 
file-zipdata.patch
/work/SRC/openSUSE:Factory/.file.new.21863/file.changes:  * boo1237209.patch
/work/SRC/openSUSE:Factory/.file.new.21863/file.changes-  * file-seccomp.patch
  Old:/work/SRC/openSUSE:Factory/.file.new.21863/file.changes-  * 
file-seccomp-ppc.patch
/work/SRC/openSUSE:Factory/.file.new.21863/file.changes:  * 
file-5.46-tcgets2.patch
/work/SRC/openSUSE:Factory/.file.new.21863/file.changes-- Port and rename patch 
file-5.46.dif which becomes now file-5.47.dif
  Old:/work/SRC/openSUSE:Factory/.file.new.21863/file.changes-  * 
file-seccomp.patch
/work/SRC/openSUSE:Factory/.file.new.21863/file.changes:  * 
file-seccomp-ppc.patch
/work/SRC/openSUSE:Factory/.file.new.21863/file.changes-  * 
file-5.46-tcgets2.patch
  Old:/work/SRC/openSUSE:Factory/.file.new.21863/file.changes-  * 
boo1237209.patch
/work/SRC/openSUSE:Factory/.file.new.21863/file.changes:  * file-seccomp.patch
/work/SRC/openSUSE:Factory/.file.new.21863/file.changes-  * 
file-seccomp-ppc.patch
  Old:/work/SRC/openSUSE:Factory/.file.new.21863/file.changes-- Remove patches 
now upstream
/work/SRC/openSUSE:Factory/.file.new.21863/file.changes:  * file-zipdata.patch
/work/SRC/openSUSE:Factory/.file.new.21863/file.changes-  * boo1237209.patch
----------(Old E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ file.spec ++++++
--- /var/tmp/diff_new_pack.5AmRyB/_old  2026-04-02 17:40:46.230368085 +0200
+++ /var/tmp/diff_new_pack.5AmRyB/_new  2026-04-02 17:40:46.234368251 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package file
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,6 +18,7 @@
 
 %define somajor 1
 %define libname libmagic%{somajor}
+%bcond_without  debugmagic
 
 Name:           file
 BuildRequires:  bash >= 4.0
@@ -36,7 +37,7 @@
 %endif
 #
 # Set Version also in python-magic.spec
-Version:        5.46
+Version:        5.47
 Release:        0
 Summary:        A Tool to Determine File Types
 License:        BSD-2-Clause
@@ -45,18 +46,16 @@
 Source3:        file-rpmlintrc
 Source4:        https://www.astron.com/pub/file/file-%{version}.tar.gz.asc
 Source5:        file.keyring
-Patch0:         file-5.46.dif
+Patch0:         file-5.47.dif
 Patch1:         file-5.19-misc.dif
+Patch2:         file-5.47-fdf.dif
+Patch3:         file-5.47-regression.dif
 Patch4:         file-4.24-autoconf.dif
-Patch5:         file-5.14-tex.dif
 Patch7:         file-4.20-ssd.dif
-Patch8:         file-4.20-xen.dif
 Patch9:         file-5.22-elf.dif
 Patch10:        file-5.19-printf.dif
 Patch12:        file-5.17-option.dif
-Patch13:        file-4.21-scribus.dif
 Patch15:        file-4.21-xcursor.dif
-Patch22:        file-5.19-cromfs.dif
 Patch25:        file-5.18-javacheck.dif
 Patch26:        file-5.19-solv.dif
 Patch27:        file-5.19-zip2.0.dif
@@ -64,11 +63,6 @@
 Patch32:        file-5.19-clicfs.dif
 Patch37:        file-secure_getenv.patch
 Patch39:        file-5.28-btrfs-image.dif
-Patch42:        boo1237209.patch
-Patch43:        file-seccomp.patch
-Patch44:        file-seccomp-ppc.patch
-Patch45:        file-zipdata.patch
-Patch46:        file-5.46-tcgets2.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 %global         _sysconfdir /etc
 %global         magicdir    %{_datadir}/file
@@ -113,30 +107,33 @@
 
 %prep
 %setup -q -n file-%{version}
+# f'cking python
+sed -ri 's/    /        /' python/magic.py
+%if %{with debugmagic}
 %patch -P 1  -p0 -b .misc
+%patch -P 2  -p0 -b .fdf
+%patch -P 3  -p0 -b .regress
+%endif
 %patch -P 4  -p0 -b .conf
-%patch -P 5  -p0 -b .tex
+%if %{with debugmagic}
 %patch -P 7  -p0 -b .ssd
-%patch -P 8  -p0 -b .xen
+%endif
 %patch -P 9  -p0 -b .elf
 %patch -P 10 -p0 -b .prtf
 %patch -P 12 -p1 -b .opt
-%patch -P 13 -p0 -b .scri
+%if %{with debugmagic}
 %patch -P 15 -p0 -b .xcur
-%patch -P 22 -p0 -b .cromfs
 %patch -P 25 -p0 -b .javacheck
 %patch -P 26 -p0 -b .solv
 %patch -P 27 -p0 -b .zip2.0
 %patch -P 31 -p0 -b .biorad
 %patch -P 32 -p0 -b .clicfs
+%endif
 %patch -P 37 -p1 -b .getenv
+%if %{with debugmagic}
 %patch -P 39 -p1 -b .btrfs
+%endif
 %patch -P 0 -b .0
-%patch -P 42 -p1
-%patch -P 43 -p1 -b .seccomp
-%patch -P 44 -p1 -b .ppc
-%patch -P 45 -p1 -b .zipdata
-%patch -P 46 -p1 -b .tcgets2
 test -s src/magic.h.in || cp -p src/magic.h src/magic.h.in
 rm -fv src/magic.h
 
@@ -172,6 +169,9 @@
 %check
 # Test if prctl is still allowed by the seccomp filter.
 export GLIBC_TUNABLES=glibc.mem.decorate_maps=1
+# Seek for duplets
+rm -v magic/magic.mgc
+make V=1 -C magic magic.mgc
 # Standard checks
 make check
 # Check out that the binary does not bail out:

++++++ python-magic.spec ++++++
--- /var/tmp/diff_new_pack.5AmRyB/_old  2026-04-02 17:40:46.286370405 +0200
+++ /var/tmp/diff_new_pack.5AmRyB/_new  2026-04-02 17:40:46.290370570 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-magic
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -21,7 +21,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %global         _miscdir    %{_datadir}/misc
 Name:           python-magic
-Version:        5.46
+Version:        5.47
 Release:        0
 Summary:        Python module to use libmagic
 License:        BSD-3-Clause AND BSD-4-Clause

++++++ file-4.20-ssd.dif ++++++
--- /var/tmp/diff_new_pack.5AmRyB/_old  2026-04-02 17:40:46.346372890 +0200
+++ /var/tmp/diff_new_pack.5AmRyB/_new  2026-04-02 17:40:46.350373056 +0200
@@ -1,11 +1,15 @@
+---
+ magic/Localstuff |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
 --- magic/Localstuff
-+++ magic/Localstuff   2013-09-30 00:00:00.000000000 +0000
-@@ -14,3 +14,12 @@
- >33   string          >\0             (%s)
- 2     string          \000\022        TeX font metric data
- >33   string          >\0             (%s)
++++ magic/Localstuff   2026-03-27 12:53:52.840746350 +0000
+@@ -5,3 +5,12 @@
+ # $File: Localstuff,v 1.5 2007/01/12 17:38:27 christos Exp $
+ # Add any locally observed files here.  Remember:
+ # text if readable, executable if runnable binary, data if unreadable.
 +
-+# XXX some MS Structured Storage Documents such as Adobe PageMaker[tm]
++# Some MS Structured Storage Documents such as Adobe PageMaker[tm]
 +# files interfere with the Microsoft Office Document and the SSD starting
 +# sequence \320\317\021\340\241\261\032\341. Anyone who knows
 +# more details about the scheme of such SSDs and can help to extend this to 
all

++++++ file-4.21-xcursor.dif ++++++
--- /var/tmp/diff_new_pack.5AmRyB/_old  2026-04-02 17:40:46.370373884 +0200
+++ /var/tmp/diff_new_pack.5AmRyB/_new  2026-04-02 17:40:46.378374216 +0200
@@ -1,10 +1,16 @@
---- magic/Localstuff
-+++ magic/Localstuff   2013-09-30 00:00:00.000000000 +0000
-@@ -33,3 +33,6 @@
- # File magic for Scribus, an Open Source Desktop Publishing system
- 0     string          \<SCRIBUSUTF8\ Version          Scribus Document
- 0     string          \<SCRIBUSUTF8NEW\ Version       Scribus Document
-+
-+# File magic for X11 cursor data files
+---
+ magic/Magdir/images |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- magic/Magdir/images
++++ magic/Magdir/images        2026-03-27 12:41:45.618155685 +0000
+@@ -2739,7 +2739,7 @@
+ # Type:       X11 cursor
+ # URL:        
http://webcvs.freedesktop.org/mime/shared-mime-info/freedesktop.org.xml.in?view=markup
+ # From:       Mathias Brodala <[email protected]>
+-0     string  Xcur                    X11 cursor
 +0     string          Xcur\020\000    X11 cursor data
+ 
+ # Type:       Olympus ORF raw images.
+ # URL:        https://libopenraw.freedesktop.org/wiki/Olympus_ORF
 

++++++ file-5.19-biorad.dif ++++++
--- /var/tmp/diff_new_pack.5AmRyB/_old  2026-04-02 17:40:46.410375541 +0200
+++ /var/tmp/diff_new_pack.5AmRyB/_new  2026-04-02 17:40:46.414375706 +0200
@@ -6,7 +6,7 @@
 ===================================================================
 --- magic/Magdir/images.orig
 +++ magic/Magdir/images
-@@ -2378,6 +2378,8 @@
+@@ -2379,6 +2379,8 @@
  # 
https://web.archive.org/web/20050317223257/www.cs.ubc.ca/spider/ladic/text/biorad.txt
  # Samples: https://www.loci.wisc.edu/software/sample-data
  14    uleshort        <2

++++++ file-5.19-clicfs.dif ++++++
--- /var/tmp/diff_new_pack.5AmRyB/_old  2026-04-02 17:40:46.442376866 +0200
+++ /var/tmp/diff_new_pack.5AmRyB/_new  2026-04-02 17:40:46.446377032 +0200
@@ -1,7 +1,11 @@
+---
+ magic/Localstuff |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
 --- magic/Localstuff
-+++ magic/Localstuff   2013-09-30 00:00:00.000000000 +0000
-@@ -53,3 +53,11 @@
- 
++++ magic/Localstuff   2026-03-27 12:58:19.727806973 +0000
+@@ -18,3 +18,11 @@
+ # libsatsolver solv file
  0     string          SOLV            Sat-solver solv file,
  >4    belong          x               version %d
 +

++++++ file-5.19-printf.dif ++++++
--- /var/tmp/diff_new_pack.5AmRyB/_old  2026-04-02 17:40:46.470378026 +0200
+++ /var/tmp/diff_new_pack.5AmRyB/_new  2026-04-02 17:40:46.474378192 +0200
@@ -6,12 +6,12 @@
 ===================================================================
 --- src/apprentice.c.orig
 +++ src/apprentice.c
-@@ -2647,7 +2647,7 @@ check_format_type(const char *ptr, int t
+@@ -2676,7 +2676,7 @@ check_format_type(const char *ptr, int t
                        }
                } else
                        h = 0;
--              while (*ptr && strchr("-.#", *ptr) != NULL)
-+              while (*ptr && strchr("-.# +'", *ptr) != NULL)
+-              while (*ptr && strchr("+-.#", *ptr) != NULL)
++              while (*ptr && strchr("+-.# '", *ptr) != NULL)
                        ptr++;
  #define CHECKLEN() do { \
        for (len = cnt = 0; isdigit(CAST(unsigned char, *ptr)); ptr++, cnt++) \

++++++ file-5.19-solv.dif ++++++
--- /var/tmp/diff_new_pack.5AmRyB/_old  2026-04-02 17:40:46.486378689 +0200
+++ /var/tmp/diff_new_pack.5AmRyB/_new  2026-04-02 17:40:46.490378855 +0200
@@ -1,11 +1,15 @@
+---
+ magic/Localstuff |    4 ++++
+ 1 file changed, 4 insertions(+)
+
 --- magic/Localstuff
-+++ magic/Localstuff   2014-06-25 08:53:43.110735387 +0000
-@@ -49,3 +49,7 @@
- >44   ulelong >0      \b block size = %d,
- >48   ulequad >0      \b bytes = %lld
- 
-+# libsatsolver solv file
++++ magic/Localstuff   2026-03-27 12:55:05.219405584 +0000
+@@ -14,3 +14,7 @@
+ # determined?
+ 512   search/531      R\0o\0o\0t\0\ \0E\0n\0t\0r\0y   Structured Storage
+ >&109 search/17       P\0a\0g\0e\0M\0a\0k\0e\0r       PageMaker
 +
++# libsatsolver solv file
 +0     string          SOLV            Sat-solver solv file,
 +>4    belong          x               version %d
 

++++++ file-5.19-zip2.0.dif ++++++
--- /var/tmp/diff_new_pack.5AmRyB/_old  2026-04-02 17:40:46.506379517 +0200
+++ /var/tmp/diff_new_pack.5AmRyB/_new  2026-04-02 17:40:46.514379848 +0200
@@ -1,10 +1,10 @@
 ---
- magic/Magdir/archive |    6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
+ magic/Magdir/archive |    9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
 
 --- magic/Magdir/archive
-+++ magic/Magdir/archive       2024-11-28 08:59:31.099299217 +0000
-@@ -1793,7 +1793,11 @@
++++ magic/Magdir/archive       2026-03-27 12:57:19.380922795 +0000
+@@ -1797,7 +1797,11 @@
  0     string          PK\x07\x08PK\x03\x04    Zip multi-volume archive data, 
at least PKZIP v2.50 to extract
  !:mime        application/zip
  !:ext zip/cbz
@@ -15,6 +15,6 @@
 +!:mime application/unknown+zip
 +!:ext zip/cbz
  
- 0     string          PK\003\004
- !:strength +1
+ # Generic zip archives (Greg Roelofs, c/o [email protected])
+ #   Next line excludes specialized formats:
 

++++++ file-5.22-elf.dif ++++++
--- /var/tmp/diff_new_pack.5AmRyB/_old  2026-04-02 17:40:46.534380677 +0200
+++ /var/tmp/diff_new_pack.5AmRyB/_new  2026-04-02 17:40:46.550381339 +0200
@@ -6,7 +6,7 @@
 ===================================================================
 --- src/readelf.c.orig
 +++ src/readelf.c
-@@ -884,7 +884,7 @@ do_core_note(struct magic_set *ms, unsig
+@@ -898,7 +898,7 @@ do_core_note(struct magic_set *ms, unsig
  
        default:
                if (type == NT_PRPSINFO && *flags & FLAGS_IS_CORE) {
@@ -15,7 +15,7 @@
                        unsigned char c;
                        /*
                         * Extract the program name.  We assume
-@@ -896,7 +896,9 @@ do_core_note(struct magic_set *ms, unsig
+@@ -910,7 +910,9 @@ do_core_note(struct magic_set *ms, unsig
                         * If the characters aren't all printable,
                         * reject it.
                         */

++++++ file-5.28-btrfs-image.dif ++++++
--- /var/tmp/diff_new_pack.5AmRyB/_old  2026-04-02 17:40:46.566382002 +0200
+++ /var/tmp/diff_new_pack.5AmRyB/_new  2026-04-02 17:40:46.570382168 +0200
@@ -17,7 +17,7 @@
 ===================================================================
 --- file-5.43.orig/magic/Magdir/filesystems
 +++ file-5.43/magic/Magdir/filesystems
-@@ -2277,20 +2277,29 @@
+@@ -2292,20 +2292,29 @@
  >>0x10060        string          >\0             lockproto %s)
  
  # Russell Coker <[email protected]>

++++++ file-5.47-fdf.dif ++++++
---
 magic/Magdir/animation |    2 +-
 magic/Magdir/archive   |    2 +-
 magic/Magdir/pdf       |    6 +++---
 3 files changed, 5 insertions(+), 5 deletions(-)

--- magic/Magdir/animation
+++ magic/Magdir/animation      2026-04-01 09:17:29.978083784 +0000
@@ -259,7 +259,7 @@
 >8     string          opx2            \b, OMA PDCF DRM + XBS ext 
 >(OMA-TS-DRM_XBS-V1_0-20070529-C)
 >8     string          pana            \b, Panasonic Digital Camera
 >8     string          piff            \b, Protected Interoperable File Format
->8     string          pnvi            ]b, Panasonic Video Intercom
+>8     string          pnvi            \b, Panasonic Video Intercom
 >8     string          qt              \b, Apple QuickTime (.MOV/QT)
 !:mime video/quicktime
 # HEIF image format
--- magic/Magdir/archive
+++ magic/Magdir/archive        2026-04-01 09:17:54.181641663 +0000
@@ -1237,7 +1237,7 @@
 #>0x200        ubequad x       \b, at 0x200 %#16.16llx
 # cab_descriptor_size like: 0 (*.cab) BD5 C8B DA5 E2A E36 116C 251D 4DA9 56F0 
5CC2 6E4B 777D 779E 1F7C2
 >16    ulelong !0      \b, descriptor size %#x
->(12.l+40)      lelong  x               ]b, %u files
+>(12.l+40)      lelong  x               \b, %u files
 
 # TOP4
 0      string  T4\x1a TOP4 archive data
--- magic/Magdir/pdf
+++ magic/Magdir/pdf    2026-03-31 11:08:30.038748296 +0000
@@ -35,12 +35,12 @@
 
 # From: Nick Schmalenberger <[email protected]>
 # Forms Data Format
-0       string          %FDF-           FDF document
+0      string          %FDF-           FDF document
 !:mime application/vnd.fdf
 !:strength +60
 !:ext  pdf
->5      byte            x               \b, version %c
->7      byte            x               \b.%c
+>5     byte            x               \b, version %c
+>7     byte            x               \b.%c
 
 0      search/1024     %PDF-           PDF document
 !:mime application/pdf

++++++ file-5.47-regression.dif ++++++
commit 3d9fe77de69d7c2fba4cffac7bb5ee5e53d2f058
Author: Werner Fink <[email protected]>
Date:   Wed Apr 1 11:08:52 2026 +0200

    Fix regression in buffer handling
    
    Signed-off-by: Werner Fink <[email protected]>

diff --git src/softmagic.c src/softmagic.c
index 9aaf8b3e..2e886a4f 100644
--- src/softmagic.c
+++ src/softmagic.c
@@ -1582,6 +1582,8 @@ normal:
                } else {
                        if (b->fd != -1)
                                ms->offset = ms->eoffset + offset;
+                       else
+                               ms->offset = offset;
                }
        }
        if ((ms->flags & MAGIC_DEBUG) != 0) {

++++++ file-4.20-xen.dif -> file-5.47.dif ++++++
--- /work/SRC/openSUSE:Factory/file/file-4.20-xen.dif   2013-10-02 
08:48:17.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.file.new.21863/file-5.47.dif    2026-04-02 
17:40:42.794225769 +0200
@@ -1,12 +1,548 @@
---- magic/Localstuff
-+++ magic/Localstuff   2013-09-30 00:00:00.000000000 +0000
-@@ -23,3 +23,9 @@
- # determined?
- 512   search/531      R\0o\0o\0t\0\ \0E\0n\0t\0r\0y   Structured Storage
- >&109 search/17       P\0a\0g\0e\0M\0a\0k\0e\0r       PageMaker
-+
-+# File magic for Xen, the virtual machine monitor for x86
-+0     string          LinuxGuestRecord        Xen saved domain
-+#>2   regex           \(name\ [^)]*\)         %s
-+>20   search/256      (name                   (name
-+>>&1  string          x                       %s...)
+---
+ magic/Magdir/elf   |    2 
+ magic/Magdir/msad  |    5 +
+ magic/Magdir/msdos |    6 -
+ magic/Makefile.am  |   63 +++++++++-------
+ magic/Makefile.in  |   60 +++++++++------
+ src/Makefile.am    |    2 
+ src/dcore.c        |  207 
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 7 files changed, 293 insertions(+), 52 deletions(-)
+
+--- magic/Magdir/elf
++++ magic/Magdir/elf   2026-02-27 10:51:00.596392215 +0000
+@@ -154,7 +154,7 @@
+ >18   leshort         47              Renesas H8/300H,
+ >18   leshort         48              Renesas H8S,
+ >18   leshort         49              Renesas H8/500,
+->18   leshort         50              IA-64,
++>18   leshort         50              IA-64 (Intel 64 bit architecture),
+ >18   leshort         51              Stanford MIPS-X,
+ >18   leshort         52              Motorola Coldfire,
+ >18   leshort         53              Motorola M68HC12,
+--- magic/Magdir/msad
++++ magic/Magdir/msad  2026-02-27 10:51:00.596392215 +0000
+@@ -0,0 +1,5 @@
++#------------------------------------------------------------------------------
++# msad:  file(1) magic for msad
++# Microsoft visual C
++# This must precede the heuristic for raw G3 data
++4     string  Standard\ Jet\ DB       Microsoft Access Database
+--- magic/Magdir/msdos
++++ magic/Magdir/msdos 2026-02-27 10:51:00.600392145 +0000
+@@ -331,10 +331,10 @@
+ # Check for presence of COM Runtime descriptor
+ >>(0x3c.l+24) leshort         0x010b
+ >>>(0x3c.l+116)       leshort >14
+->>>>(0x3c.l+232) lelong       >0      Mono/.Net assembly
++>>>>(0x3c.l+232) lelong       >0      \b, Mono/.Net assembly
+ >>(0x3c.l+24) leshort         0x020b
+ >>>(0x3c.l+132)       leshort >14
+->>>>(0x3c.l+248) lelong       >0      Mono/.Net assembly
++>>>>(0x3c.l+248) lelong       >0      \b, Mono/.Net assembly
+ 
+ # hooray, there's a DOS extender using the PE format, with a valid PE
+ # executable inside (which just prints a message and exits if run in win)
+@@ -1506,7 +1506,7 @@
+ >1            leshort <-259
+ # that offset must be accessible
+ # add 10000h to jump at end of 64 KiB segment, add 1 for jump instruction and 
2 for 16-bit offset
+->>(1,s+65539)   byte    x
++>>(1.s+65539)   byte    x
+ # after jump next instruction for DEBUGGING!
+ #>>>&-1               ubelong x       \b, NEXT instruction %#8.8x
+ >>>0        use msdos-com
+--- magic/Makefile.am
++++ magic/Makefile.am  2026-02-27 10:51:00.600392145 +0000
+@@ -5,7 +5,7 @@ MAGIC_FRAGMENT_BASE = Magdir
+ MAGIC_DIR = $(top_srcdir)/magic
+ MAGIC_FRAGMENT_DIR = $(MAGIC_DIR)/$(MAGIC_FRAGMENT_BASE)
+ 
+-pkgdata_DATA = magic.mgc
++pkgdata_DATA = magic.mgc magic
+ 
+ MAGIC_FRAGMENTS = \
+ $(MAGIC_DIR)/Header \
+@@ -24,7 +24,6 @@ $(MAGIC_FRAGMENT_DIR)/animation \
+ $(MAGIC_FRAGMENT_DIR)/aout \
+ $(MAGIC_FRAGMENT_DIR)/apache \
+ $(MAGIC_FRAGMENT_DIR)/apl \
+-$(MAGIC_FRAGMENT_DIR)/apple \
+ $(MAGIC_FRAGMENT_DIR)/application \
+ $(MAGIC_FRAGMENT_DIR)/applix \
+ $(MAGIC_FRAGMENT_DIR)/apt \
+@@ -108,7 +107,6 @@ $(MAGIC_FRAGMENT_DIR)/erlang \
+ $(MAGIC_FRAGMENT_DIR)/espressif \
+ $(MAGIC_FRAGMENT_DIR)/esri \
+ $(MAGIC_FRAGMENT_DIR)/fcs \
+-$(MAGIC_FRAGMENT_DIR)/filesystems \
+ $(MAGIC_FRAGMENT_DIR)/finger \
+ $(MAGIC_FRAGMENT_DIR)/firmware \
+ $(MAGIC_FRAGMENT_DIR)/flash \
+@@ -156,6 +154,8 @@ $(MAGIC_FRAGMENT_DIR)/isz \
+ $(MAGIC_FRAGMENT_DIR)/java \
+ $(MAGIC_FRAGMENT_DIR)/javascript \
+ $(MAGIC_FRAGMENT_DIR)/jpeg \
++$(MAGIC_FRAGMENT_DIR)/linux \
++$(MAGIC_FRAGMENT_DIR)/filesystems \
+ $(MAGIC_FRAGMENT_DIR)/karma \
+ $(MAGIC_FRAGMENT_DIR)/kde \
+ $(MAGIC_FRAGMENT_DIR)/keepass \
+@@ -168,7 +168,6 @@ $(MAGIC_FRAGMENT_DIR)/lauterbach \
+ $(MAGIC_FRAGMENT_DIR)/lecter \
+ $(MAGIC_FRAGMENT_DIR)/lex \
+ $(MAGIC_FRAGMENT_DIR)/lif \
+-$(MAGIC_FRAGMENT_DIR)/linux \
+ $(MAGIC_FRAGMENT_DIR)/lisp \
+ $(MAGIC_FRAGMENT_DIR)/llvm \
+ $(MAGIC_FRAGMENT_DIR)/locoscript \
+@@ -176,7 +175,6 @@ $(MAGIC_FRAGMENT_DIR)/lua \
+ $(MAGIC_FRAGMENT_DIR)/luks \
+ $(MAGIC_FRAGMENT_DIR)/m4 \
+ $(MAGIC_FRAGMENT_DIR)/mach \
+-$(MAGIC_FRAGMENT_DIR)/macintosh \
+ $(MAGIC_FRAGMENT_DIR)/macos \
+ $(MAGIC_FRAGMENT_DIR)/magic \
+ $(MAGIC_FRAGMENT_DIR)/mail.news \
+@@ -200,11 +198,11 @@ $(MAGIC_FRAGMENT_DIR)/misctools \
+ $(MAGIC_FRAGMENT_DIR)/mkid \
+ $(MAGIC_FRAGMENT_DIR)/mlssa \
+ $(MAGIC_FRAGMENT_DIR)/mmdf \
+-$(MAGIC_FRAGMENT_DIR)/modem \
+ $(MAGIC_FRAGMENT_DIR)/modulefile \
+ $(MAGIC_FRAGMENT_DIR)/motorola \
+ $(MAGIC_FRAGMENT_DIR)/mozilla \
+ $(MAGIC_FRAGMENT_DIR)/msdos \
++$(MAGIC_FRAGMENT_DIR)/modem \
+ $(MAGIC_FRAGMENT_DIR)/msooxml \
+ $(MAGIC_FRAGMENT_DIR)/msvc \
+ $(MAGIC_FRAGMENT_DIR)/msx \
+@@ -269,6 +267,8 @@ $(MAGIC_FRAGMENT_DIR)/r \
+ $(MAGIC_FRAGMENT_DIR)/revision \
+ $(MAGIC_FRAGMENT_DIR)/ringdove \
+ $(MAGIC_FRAGMENT_DIR)/riff \
++$(MAGIC_FRAGMENT_DIR)/apple \
++$(MAGIC_FRAGMENT_DIR)/macintosh \
+ $(MAGIC_FRAGMENT_DIR)/rpi \
+ $(MAGIC_FRAGMENT_DIR)/rpm \
+ $(MAGIC_FRAGMENT_DIR)/rpmsg \
+@@ -365,9 +365,21 @@ EXTRA_DIST = \
+ $(MAGIC_DIR)/scripts/create_filemagic_flac \
+ $(MAGIC_FRAGMENTS)
+ 
+-
++RAW   = magic 
+ MAGIC = magic.mgc
+-CLEANFILES = ${MAGIC} $(MAGIC_FRAGMENT_DIR)/Localstuff
++CLEANFILES = ${MAGIC} $(MAGIC_FRAGMENT_DIR)/Localstuff ${RAW}
++
++${RAW}: $(MAGIC_DIR)/Header $(MAGIC_DIR)/Localstuff $(MAGIC_FRAGMENTS)
++      cat /dev/null > $@
++      for frag in $(MAGIC_FRAGMENTS); do \
++          if test -f $(srcdir)/$$frag; then \
++              f=$(srcdir)/$$frag; \
++          else \
++              f=$$frag; \
++          fi; \
++          cat $$f; \
++      done >> $@
++
+ 
+ # FIXME: Build file natively as well so that it can be used to compile
+ # the target's magic file; for now we bail if the local version does not match
+@@ -379,19 +391,22 @@ FILE_COMPILE = $(top_builddir)/src/file$
+ FILE_COMPILE_DEP = $(FILE_COMPILE)
+ endif
+ 
+-${MAGIC}: $(MAGIC_FRAGMENTS) $(FILE_COMPILE_DEP)
+-      @rm -fr magic
+-      @mkdir magic && cp -p $(MAGIC_FRAGMENTS) magic
+-      @(if expr "${FILE_COMPILE}" : '.*/.*' > /dev/null; then \
+-          echo "Using ${FILE_COMPILE} to generate ${MAGIC}" > /dev/null; \
+-        else \
+-          v=$$(${FILE_COMPILE} --version | sed -e s/file-// -e q); \
+-          if [ "$$v" != "${PACKAGE_VERSION}" ]; then \
+-              echo "Cannot use the installed version of file ($$v) to"; \
+-              echo "cross-compile file ${PACKAGE_VERSION}"; \
+-              echo "Please install file ${PACKAGE_VERSION} locally first"; \
+-              exit 1; \
+-          fi; \
+-        fi)
+-      $(FILE_COMPILE) -C -m magic
+-      @rm -fr magic
++${MAGIC}: $(MAGIC_FRAGMENTS) $(FILE_COMPILE_DEP) $(RAW)
++      $(FILE_COMPILE) -C -m $(RAW)
++
++#${MAGIC}: $(MAGIC_FRAGMENTS) $(FILE_COMPILE_DEP)
++#     @rm -fr magic
++#     @mkdir magic && cp -p $(MAGIC_FRAGMENTS) magic
++#     @(if expr "${FILE_COMPILE}" : '.*/.*' > /dev/null; then \
++#         echo "Using ${FILE_COMPILE} to generate ${MAGIC}" > /dev/null; \
++#       else \
++#         v=$$(${FILE_COMPILE} --version | sed -e s/file-// -e q); \
++#         if [ "$$v" != "${PACKAGE_VERSION}" ]; then \
++#             echo "Cannot use the installed version of file ($$v) to"; \
++#             echo "cross-compile file ${PACKAGE_VERSION}"; \
++#             echo "Please install file ${PACKAGE_VERSION} locally first"; \
++#             exit 1; \
++#         fi; \
++#       fi)
++#     $(FILE_COMPILE) -C -m magic
++#     @rm -fr magic
+--- magic/Makefile.in
++++ magic/Makefile.in  2026-02-27 10:51:00.600392145 +0000
+@@ -284,7 +284,7 @@ top_srcdir = @top_srcdir@
+ MAGIC_FRAGMENT_BASE = Magdir
+ MAGIC_DIR = $(top_srcdir)/magic
+ MAGIC_FRAGMENT_DIR = $(MAGIC_DIR)/$(MAGIC_FRAGMENT_BASE)
+-pkgdata_DATA = magic.mgc
++pkgdata_DATA = magic.mgc magic
+ MAGIC_FRAGMENTS = \
+ $(MAGIC_DIR)/Header \
+ $(MAGIC_DIR)/Localstuff \
+|@@ -302,7 +302,6 @@ $(MAGIC_FRAGMENT_DIR)/animation \
+| $(MAGIC_FRAGMENT_DIR)/aout \
+| $(MAGIC_FRAGMENT_DIR)/apache \
+| $(MAGIC_FRAGMENT_DIR)/apl \
+|-$(MAGIC_FRAGMENT_DIR)/apple \
+| $(MAGIC_FRAGMENT_DIR)/application \
+| $(MAGIC_FRAGMENT_DIR)/applix \
+| $(MAGIC_FRAGMENT_DIR)/apt \
+|@@ -386,7 +385,6 @@ $(MAGIC_FRAGMENT_DIR)/erlang \
+| $(MAGIC_FRAGMENT_DIR)/espressif \
+| $(MAGIC_FRAGMENT_DIR)/esri \
+| $(MAGIC_FRAGMENT_DIR)/fcs \
+|-$(MAGIC_FRAGMENT_DIR)/filesystems \
+| $(MAGIC_FRAGMENT_DIR)/finger \
+| $(MAGIC_FRAGMENT_DIR)/firmware \
+| $(MAGIC_FRAGMENT_DIR)/flash \
+|@@ -434,6 +432,8 @@ $(MAGIC_FRAGMENT_DIR)/isz \
+| $(MAGIC_FRAGMENT_DIR)/java \
+| $(MAGIC_FRAGMENT_DIR)/javascript \
+| $(MAGIC_FRAGMENT_DIR)/jpeg \
+|+$(MAGIC_FRAGMENT_DIR)/linux \
+|+$(MAGIC_FRAGMENT_DIR)/filesystems \
+| $(MAGIC_FRAGMENT_DIR)/karma \
+| $(MAGIC_FRAGMENT_DIR)/kde \
+| $(MAGIC_FRAGMENT_DIR)/keepass \
+|@@ -446,7 +446,6 @@ $(MAGIC_FRAGMENT_DIR)/lauterbach \
+| $(MAGIC_FRAGMENT_DIR)/lecter \
+| $(MAGIC_FRAGMENT_DIR)/lex \
+| $(MAGIC_FRAGMENT_DIR)/lif \
+|-$(MAGIC_FRAGMENT_DIR)/linux \
+| $(MAGIC_FRAGMENT_DIR)/lisp \
+| $(MAGIC_FRAGMENT_DIR)/llvm \
+| $(MAGIC_FRAGMENT_DIR)/locoscript \
+|@@ -454,7 +453,6 @@ $(MAGIC_FRAGMENT_DIR)/lua \
+| $(MAGIC_FRAGMENT_DIR)/luks \
+| $(MAGIC_FRAGMENT_DIR)/m4 \
+| $(MAGIC_FRAGMENT_DIR)/mach \
+|-$(MAGIC_FRAGMENT_DIR)/macintosh \
+| $(MAGIC_FRAGMENT_DIR)/macos \
+| $(MAGIC_FRAGMENT_DIR)/magic \
+| $(MAGIC_FRAGMENT_DIR)/mail.news \
+|@@ -478,11 +476,11 @@ $(MAGIC_FRAGMENT_DIR)/misctools \
+| $(MAGIC_FRAGMENT_DIR)/mkid \
+| $(MAGIC_FRAGMENT_DIR)/mlssa \
+| $(MAGIC_FRAGMENT_DIR)/mmdf \
+|-$(MAGIC_FRAGMENT_DIR)/modem \
+| $(MAGIC_FRAGMENT_DIR)/modulefile \
+| $(MAGIC_FRAGMENT_DIR)/motorola \
+| $(MAGIC_FRAGMENT_DIR)/mozilla \
+| $(MAGIC_FRAGMENT_DIR)/msdos \
+|+$(MAGIC_FRAGMENT_DIR)/modem \
+| $(MAGIC_FRAGMENT_DIR)/msooxml \
+| $(MAGIC_FRAGMENT_DIR)/msvc \
+| $(MAGIC_FRAGMENT_DIR)/msx \
+|@@ -547,6 +545,8 @@ $(MAGIC_FRAGMENT_DIR)/r \
+| $(MAGIC_FRAGMENT_DIR)/revision \
+| $(MAGIC_FRAGMENT_DIR)/ringdove \
+| $(MAGIC_FRAGMENT_DIR)/riff \
+|+$(MAGIC_FRAGMENT_DIR)/apple \
+|+$(MAGIC_FRAGMENT_DIR)/macintosh \
+| $(MAGIC_FRAGMENT_DIR)/rpi \
+| $(MAGIC_FRAGMENT_DIR)/rpm \
+| $(MAGIC_FRAGMENT_DIR)/rpmsg \
+@@ -643,10 +643,22 @@ EXTRA_DIST = \
+ $(MAGIC_DIR)/scripts/create_filemagic_flac \
+ $(MAGIC_FRAGMENTS)
+ 
++RAW   = magic
+ MAGIC = magic.mgc
+-CLEANFILES = ${MAGIC} $(MAGIC_FRAGMENT_DIR)/Localstuff
++CLEANFILES = ${MAGIC} $(MAGIC_FRAGMENT_DIR)/Localstuff ${RAW}
+ @IS_CROSS_COMPILE_FALSE@FILE_COMPILE = $(top_builddir)/src/file${EXEEXT}
+ 
++${RAW}: $(MAGIC_DIR)/Header $(MAGIC_DIR)/Localstuff $(MAGIC_FRAGMENTS)
++      cat /dev/null > $@
++      for frag in $(MAGIC_FRAGMENTS); do \
++          if test -f $(srcdir)/$$frag; then \
++              f=$(srcdir)/$$frag; \
++          else \
++              f=$$frag; \
++          fi; \
++          cat $$f; \
++      done >> $@
++
+ # FIXME: Build file natively as well so that it can be used to compile
+ # the target's magic file; for now we bail if the local version does not match
+ @IS_CROSS_COMPILE_TRUE@FILE_COMPILE = file${EXEEXT}
+@@ -870,23 +882,25 @@ uninstall-am: uninstall-pkgdataDATA
+ 
+ .PRECIOUS: Makefile
+ 
++${MAGIC}: $(MAGIC_FRAGMENTS) $(FILE_COMPILE_DEP) $(RAW)
++      $(FILE_COMPILE) -C -m $(RAW)
+ 
+-${MAGIC}: $(MAGIC_FRAGMENTS) $(FILE_COMPILE_DEP)
+-      @rm -fr magic
+-      @mkdir magic && cp -p $(MAGIC_FRAGMENTS) magic
+-      @(if expr "${FILE_COMPILE}" : '.*/.*' > /dev/null; then \
+-          echo "Using ${FILE_COMPILE} to generate ${MAGIC}" > /dev/null; \
+-        else \
+-          v=$$(${FILE_COMPILE} --version | sed -e s/file-// -e q); \
+-          if [ "$$v" != "${PACKAGE_VERSION}" ]; then \
+-              echo "Cannot use the installed version of file ($$v) to"; \
+-              echo "cross-compile file ${PACKAGE_VERSION}"; \
+-              echo "Please install file ${PACKAGE_VERSION} locally first"; \
+-              exit 1; \
+-          fi; \
+-        fi)
+-      $(FILE_COMPILE) -C -m magic
+-      @rm -fr magic
++#${MAGIC}: $(MAGIC_FRAGMENTS) $(FILE_COMPILE_DEP)
++#     @rm -fr magic
++#     @mkdir magic && cp -p $(MAGIC_FRAGMENTS) magic
++#     @(if expr "${FILE_COMPILE}" : '.*/.*' > /dev/null; then \
++#         echo "Using ${FILE_COMPILE} to generate ${MAGIC}" > /dev/null; \
++#       else \
++#         v=$$(${FILE_COMPILE} --version | sed -e s/file-// -e q); \
++#         if [ "$$v" != "${PACKAGE_VERSION}" ]; then \
++#             echo "Cannot use the installed version of file ($$v) to"; \
++#             echo "cross-compile file ${PACKAGE_VERSION}"; \
++#             echo "Please install file ${PACKAGE_VERSION} locally first"; \
++#             exit 1; \
++#         fi; \
++#       fi)
++#     $(FILE_COMPILE) -C -m magic
++#     @rm -fr magic
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+--- src/Makefile.am
++++ src/Makefile.am    2026-02-27 10:51:00.600392145 +0000
+@@ -1,4 +1,4 @@
+-MAGIC = $(pkgdatadir)/magic
++MAGIC = $(sysconfdir)/magic:$(pkgdatadir)/magic
+ lib_LTLIBRARIES = libmagic.la
+ nodist_include_HEADERS = magic.h
+ 
+--- src/dcore.c
++++ src/dcore.c        2026-02-27 10:51:00.600392145 +0000
+@@ -0,0 +1,207 @@
++/*
++ * Show goo about ELF core files
++ * Jeremy Fitzhardinge <[email protected]> 1996
++ */
++#include <unistd.h>
++#include <fcntl.h>
++#include <stdlib.h>
++#include <stdio.h>
++#include <sys/types.h>
++#include <string.h>
++#if defined __GLIBC__ && __GLIBC__ >= 2
++#include <elf.h>
++#include <sys/procfs.h>
++# ifndef NT_PRFPREG
++#  define NT_PRFPREG 2
++# endif
++# ifndef NT_TASKSTRUCT
++#  define NT_TASKSTRUCT 4
++# endif
++#else
++#include <linux/elf.h>
++#include <linux/elfcore.h>
++#endif
++
++static void fperror(const char *str)
++{
++      perror(str);
++      exit(1);
++}
++
++static size_t myread(int fd, void *buf, size_t sz)
++{
++      size_t ret;
++      
++      if ((ret = read(fd, buf, sz)) != sz)
++              fperror("read failed");
++      return ret;
++}
++
++static void print_prstatus(const prstatus_t *pr)
++{
++      unsigned i;
++      static const char *regs[] = { "ebx", "ecx", "edx", "esi", "edi", "ebp",
++                                            "eax", "ds", "es", "fs", "gs",
++                                            "orig_eax", "eip", "cs",
++                                            "efl", "uesp", "ss"};
++      
++      printf("    pid=%d ppid=%d pgrp=%d sid=%d\n",
++            pr->pr_pid, pr->pr_ppid, pr->pr_pgrp, pr->pr_sid);
++      for(i = 0; i < NGREG; i++)
++      {
++              unsigned long val = pr->pr_reg[i];
++              printf("    %-2u %-5s=%08lx %lu\n", i, regs[i], val, val);
++      }
++}
++
++static void print_prpsinfo(const prpsinfo_t *ps)
++{
++      printf("    uid=%d gid=%d\n", ps->pr_uid, ps->pr_gid);
++      printf("    comm=%s\n", ps->pr_fname);
++      printf("    psargs=%s\n", ps->pr_psargs);
++}
++
++#define roundup(x, y)  ((((x)+((y)-1))/(y))*(y))
++
++static void do_note(int fd, Elf32_Phdr *phdr)
++{
++      off_t here = lseek(fd, 0, SEEK_CUR);
++      int size = phdr->p_filesz;
++      char *raw = alloca(size), *end;
++      end = raw+size;
++      
++      lseek(fd, phdr->p_offset, SEEK_SET);
++      myread(fd, raw, size);
++
++      while(raw < end)
++      {
++              Elf32_Nhdr *note = (Elf32_Nhdr *)raw;
++              const char *str;
++              const char *name, *desc;
++              
++              raw += sizeof(*note);
++              name = raw;
++              raw += roundup(note->n_namesz, sizeof(long));
++              desc = raw;
++              raw += roundup(note->n_descsz, sizeof(long));
++
++              printf("  name=%.*s", (int)note->n_namesz, name);
++
++              if(strncmp(name, "CORE", note->n_namesz) != 0)
++              {
++                      printf("\n");
++                      continue;
++              }
++              
++              switch(note->n_type)
++              {
++#define X(x)  case x: str = #x; break;
++                      X(NT_PRSTATUS);
++                      X(NT_PRFPREG);
++                      X(NT_PRPSINFO);
++                      X(NT_TASKSTRUCT);
++#undef X
++              default:
++                      str = "???";
++              }
++              printf(" n_type=%s n_descsz=%ld\n",
++                     str, note->n_descsz);
++              switch(note->n_type)
++              {
++              case NT_PRSTATUS:
++                      print_prstatus((prstatus_t *)desc);
++                      break;
++              case NT_PRPSINFO:
++                      print_prpsinfo((prpsinfo_t *)desc);
++                      break;
++              }
++      }
++      lseek(fd, here, SEEK_SET);
++}
++
++int main(int argc, char *argv[])
++{
++      int fd;
++      Elf32_Ehdr elf;
++      int i;
++      
++      if (argc != 2)
++      {
++              fprintf(stderr, "Usage: %s corefile\n", argv[0]);
++              exit(1);
++      }
++
++      if ((fd = open(argv[1], O_RDONLY)) == -1)
++              fperror("open of core");
++
++      myread(fd, &elf, sizeof(elf));
++
++      if (memcmp(ELFMAG, elf.e_ident, SELFMAG) != 0)
++              printf("bad magic\n");
++
++      if (elf.e_ident[EI_CLASS] != ELFCLASS32)
++              printf("wrong class\n");
++              
++      if (elf.e_ident[EI_DATA] != ELFDATA2LSB)
++              printf("wrong endianess\n");
++
++      if (elf.e_ident[EI_VERSION] != EV_CURRENT)
++              printf("wrong version\n");
++
++      {
++              const char *str;
++              switch(elf.e_type)
++              {
++#define C(x)  case ET_##x: str = #x; break;
++                      C(NONE);
++                      C(REL);
++                      C(EXEC);
++                      C(DYN);
++                      C(CORE);
++#undef C
++              default: str = "???"; break;
++              }
++              printf("elf file type ET_%s\n", str);
++      }
++
++      if (elf.e_machine != EM_386 && elf.e_machine != EM_486)
++              printf("not i386 or i486\n");
++
++      if (elf.e_ehsize != sizeof(elf))
++              printf("wrong header size\n");
++
++      if (elf.e_phentsize != sizeof(Elf32_Phdr))
++              printf("wrong phdr size\n");
++
++      if (lseek(fd, elf.e_phoff, SEEK_SET) != (off_t)elf.e_phoff)
++              fperror("lseek to phdr failed\n");
++
++      for(i = 0; i < elf.e_phnum; i++)
++      {
++              Elf32_Phdr phdr;
++              const char *str;
++              
++              myread(fd, &phdr, sizeof(phdr));
++              switch(phdr.p_type)
++              {
++#define C(x)  case PT_##x: str = #x; break;
++                      C(NULL);
++                      C(LOAD);
++                      C(DYNAMIC);
++                      C(INTERP);
++                      C(NOTE);
++                      C(SHLIB);
++                      C(PHDR);
++#undef C
++              default:
++                      str = "???"; break;
++              }
++              printf("type PT_%s off=%ld vaddr=%lx filesz=%ld flags=%lx\n",
++                     str, phdr.p_offset, phdr.p_vaddr, phdr.p_filesz,
++                     (unsigned long)phdr.p_flags);
++              if (phdr.p_type == PT_NOTE)
++                      do_note(fd, &phdr);
++      }
++      exit(0);
++}
++

++++++ file-5.46.tar.gz -> file-5.47.tar.gz ++++++
++++ 5479 lines of diff (skipped)

++++++ file-secure_getenv.patch ++++++
--- /var/tmp/diff_new_pack.5AmRyB/_old  2026-04-02 17:40:47.718429717 +0200
+++ /var/tmp/diff_new_pack.5AmRyB/_new  2026-04-02 17:40:47.734430380 +0200
@@ -15,9 +15,9 @@
  dnl Checks for typedefs, structures, and compiler characteristics.
  AC_TYPE_OFF_T
  AC_TYPE_SIZE_T
---- file-5.42/src/file.h
-+++ file-5.42/src/file.h       2022-06-13 08:34:50.347521415 +0000
-@@ -735,4 +735,12 @@ static const char *rcsid(const char *p)
+--- file-5.47/src/file.h
++++ file-5.47/src/file.h       2026-02-27 10:50:37.160814338 +0000
+@@ -739,6 +739,14 @@ static const char *rcsid(const char *p)
  #define __RCSID(a)
  #endif
  
@@ -29,7 +29,9 @@
 +#  endif
 +#endif
 +
- #endif /* __file_h__ */
+ #define file_no_overflow \
+     __attribute__((__no_sanitize__("signed-integer-overflow")))
+ 
 --- file-5.42/src/magic.c
 +++ file-5.42/src/magic.c      2022-06-13 08:36:49.997304349 +0000
 @@ -185,7 +185,7 @@ get_default_magic(void)

Reply via email to