Compare commits
No commits in common. "c10s" and "c8" have entirely different histories.
1
.file.metadata
Normal file
1
.file.metadata
Normal file
@ -0,0 +1 @@
|
||||
31a67e4dc0a3d7a8d1b850429c3f625314700240 SOURCES/file-5.33.tar.gz
|
||||
@ -1 +0,0 @@
|
||||
1
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,2 +1 @@
|
||||
/file-5.*.tar.gz
|
||||
/file-5.*.tar.gz.asc
|
||||
SOURCES/file-5.33.tar.gz
|
||||
|
||||
28
SOURCES/file-5.33-CVE-2018-10360.patch
Normal file
28
SOURCES/file-5.33-CVE-2018-10360.patch
Normal file
@ -0,0 +1,28 @@
|
||||
From 8616080aecf07436e80a27f68c336382c1d1c22d Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Sat, 9 Jun 2018 16:00:06 +0000
|
||||
Subject: [PATCH] Avoid reading past the end of buffer (Rui Reis)
|
||||
|
||||
Upstream-commit: a642587a9c9e2dd7feacdf513c3643ce26ad3c22
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
src/readelf.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/readelf.c b/src/readelf.c
|
||||
index 3df0836..d96a538 100644
|
||||
--- a/src/readelf.c
|
||||
+++ b/src/readelf.c
|
||||
@@ -825,7 +825,8 @@ do_core_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
|
||||
|
||||
cname = (unsigned char *)
|
||||
&nbuf[doff + prpsoffsets(i)];
|
||||
- for (cp = cname; *cp && isprint(*cp); cp++)
|
||||
+ for (cp = cname; cp < nbuf + size && *cp
|
||||
+ && isprint(*cp); cp++)
|
||||
continue;
|
||||
/*
|
||||
* Linux apparently appends a space at the end
|
||||
--
|
||||
2.14.4
|
||||
|
||||
68
SOURCES/file-5.33-bound-file_strncmp.patch
Normal file
68
SOURCES/file-5.33-bound-file_strncmp.patch
Normal file
@ -0,0 +1,68 @@
|
||||
diff -urp file-5.33.orig/src/softmagic.c file-5.33/src/softmagic.c
|
||||
--- file-5.33.orig/src/softmagic.c 2020-12-14 12:26:50.286849841 -0500
|
||||
+++ file-5.33/src/softmagic.c 2020-12-14 12:35:52.679166211 -0500
|
||||
@@ -1748,7 +1748,8 @@ mget(struct magic_set *ms, struct magic
|
||||
}
|
||||
|
||||
private uint64_t
|
||||
-file_strncmp(const char *s1, const char *s2, size_t len, uint32_t flags)
|
||||
+file_strncmp(const char *s1, const char *s2, size_t len, size_t maxlen,
|
||||
+ uint32_t flags)
|
||||
{
|
||||
/*
|
||||
* Convert the source args to unsigned here so that (1) the
|
||||
@@ -1760,7 +1761,7 @@ file_strncmp(const char *s1, const char
|
||||
const unsigned char *b = (const unsigned char *)s2;
|
||||
uint32_t ws = flags & (STRING_COMPACT_WHITESPACE |
|
||||
STRING_COMPACT_OPTIONAL_WHITESPACE);
|
||||
- const unsigned char *eb = b + (ws ? strlen(s2) : len);
|
||||
+ const unsigned char *eb = b + (ws ? maxlen : len);
|
||||
uint64_t v;
|
||||
|
||||
/*
|
||||
@@ -1818,7 +1819,8 @@ file_strncmp(const char *s1, const char
|
||||
}
|
||||
|
||||
private uint64_t
|
||||
-file_strncmp16(const char *a, const char *b, size_t len, uint32_t flags)
|
||||
+file_strncmp16(const char *a, const char *b, size_t len, size_t maxlen,
|
||||
+ uint32_t flags)
|
||||
{
|
||||
/*
|
||||
* XXX - The 16-bit string compare probably needs to be done
|
||||
@@ -1826,7 +1828,7 @@ file_strncmp16(const char *a, const char
|
||||
* At the moment, I am unsure.
|
||||
*/
|
||||
flags = 0;
|
||||
- return file_strncmp(a, b, len, flags);
|
||||
+ return file_strncmp(a, b, len, maxlen, flags);
|
||||
}
|
||||
|
||||
private int
|
||||
@@ -1954,13 +1956,15 @@ magiccheck(struct magic_set *ms, struct
|
||||
case FILE_STRING:
|
||||
case FILE_PSTRING:
|
||||
l = 0;
|
||||
- v = file_strncmp(m->value.s, p->s, (size_t)m->vallen, m->str_flags);
|
||||
+ v = file_strncmp(m->value.s, p->s, (size_t)m->vallen,
|
||||
+ sizeof(p->s), m->str_flags);
|
||||
break;
|
||||
|
||||
case FILE_BESTRING16:
|
||||
case FILE_LESTRING16:
|
||||
l = 0;
|
||||
- v = file_strncmp16(m->value.s, p->s, (size_t)m->vallen, m->str_flags);
|
||||
+ v = file_strncmp16(m->value.s, p->s, (size_t)m->vallen,
|
||||
+ sizeof(p->s), m->str_flags);
|
||||
break;
|
||||
|
||||
case FILE_SEARCH: { /* search ms->search.s for the string m->value.s */
|
||||
@@ -1979,7 +1983,7 @@ magiccheck(struct magic_set *ms, struct
|
||||
return 0;
|
||||
|
||||
v = file_strncmp(m->value.s, ms->search.s + idx, slen,
|
||||
- m->str_flags);
|
||||
+ ms->search.s_len - idx, m->str_flags);
|
||||
if (v == 0) { /* found match */
|
||||
ms->search.offset += idx;
|
||||
ms->search.rm_len = ms->search.s_len - idx;
|
||||
37
SOURCES/file-5.33-clamav.patch
Normal file
37
SOURCES/file-5.33-clamav.patch
Normal file
@ -0,0 +1,37 @@
|
||||
From fb1604080767501fde17eb601382e84f1c1ddca3 Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Mon, 16 Jul 2018 12:30:41 +0000
|
||||
Subject: [PATCH] remember to put a space between the version and the number,
|
||||
plus more version parsing (Kamil Dudka)
|
||||
|
||||
Upstream-commit: 1a7f58c9f253e3b902bfb7a77afd8375b0b428b7
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
magic/Magdir/fsav | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/magic/Magdir/fsav b/magic/Magdir/fsav
|
||||
index 5714798..5d72ab9 100644
|
||||
--- a/magic/Magdir/fsav
|
||||
+++ b/magic/Magdir/fsav
|
||||
@@ -48,13 +48,15 @@
|
||||
>11 string >\0 Clam AntiVirus database %-.23s
|
||||
>>34 string :
|
||||
>>>35 string !: \b, version
|
||||
->>>>35 string x \b%-.1s
|
||||
->>>>>36 string !:
|
||||
+>>>>35 string x \b %-.1s
|
||||
+>>>>>36 string !:
|
||||
>>>>>>36 string x \b%-.1s
|
||||
>>>>>>>37 string !:
|
||||
>>>>>>>>37 string x \b%-.1s
|
||||
>>>>>>>>>38 string !:
|
||||
>>>>>>>>>>38 string x \b%-.1s
|
||||
+>>>>>>>>>>>39 string !:
|
||||
+>>>>>>>>>>>>39 string x \b%-.1s
|
||||
>512 string \037\213 \b, gzipped
|
||||
>769 string ustar\0 \b, tarred
|
||||
|
||||
--
|
||||
2.14.4
|
||||
|
||||
31
SOURCES/file-5.33-covscan.patch
Normal file
31
SOURCES/file-5.33-covscan.patch
Normal file
@ -0,0 +1,31 @@
|
||||
From 7bd1d499157caa391082f594d197f49f5327bd56 Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Wed, 1 Aug 2018 09:59:45 +0000
|
||||
Subject: [PATCH] fix leak on error, found by coverity.
|
||||
|
||||
Upstream-commit: e0805be4909e47dac47bab9d0caf3725da43e645
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
src/compress.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/compress.c b/src/compress.c
|
||||
index 184011b..cb11303 100644
|
||||
--- a/src/compress.c
|
||||
+++ b/src/compress.c
|
||||
@@ -249,8 +249,11 @@ file_zmagic(struct magic_set *ms, const struct buffer *b, const char *name)
|
||||
* XXX: If file_buffer fails here, we overwrite
|
||||
* the compressed text. FIXME.
|
||||
*/
|
||||
- if (file_buffer(ms, -1, NULL, buf, nbytes) == -1)
|
||||
+ if (file_buffer(ms, -1, NULL, buf, nbytes) == -1) {
|
||||
+ if (file_pop_buffer(ms, pb) != NULL)
|
||||
+ abort();
|
||||
goto error;
|
||||
+ }
|
||||
if ((rbuf = file_pop_buffer(ms, pb)) != NULL) {
|
||||
if (file_printf(ms, "%s", rbuf) == -1) {
|
||||
free(rbuf);
|
||||
--
|
||||
2.17.2
|
||||
|
||||
42
SOURCES/file-5.33-fix-compression.patch
Normal file
42
SOURCES/file-5.33-fix-compression.patch
Normal file
@ -0,0 +1,42 @@
|
||||
diff --git a/src/compress.c b/src/compress.c
|
||||
index cb11303..5677412 100644
|
||||
--- a/src/compress.c
|
||||
+++ b/src/compress.c
|
||||
@@ -723,25 +723,24 @@ uncompressbuf(int fd, size_t bytes_max, size_t method, const unsigned char *old,
|
||||
rv = OKDATA;
|
||||
if ((r = sread(fdp[STDOUT_FILENO][0], *newch, bytes_max, 0)) > 0)
|
||||
break;
|
||||
- DPRINTF("Read stdout failed %d (%s)\n", fdp[STDOUT_FILENO][0],
|
||||
- r != -1 ? strerror(errno) : "no data");
|
||||
-
|
||||
- rv = ERRDATA;
|
||||
- if (r == 0 &&
|
||||
- (r = sread(fdp[STDERR_FILENO][0], *newch, bytes_max, 0)) > 0)
|
||||
- {
|
||||
+ if (r < 0) {
|
||||
+ rv = ERRDATA;
|
||||
+ DPRINTF("Read stdout failed %d (%s)\n", fdp[STDOUT_FILENO][0],
|
||||
+ strerror(errno));
|
||||
+ goto err;
|
||||
+ } else if ((r = sread(fdp[STDERR_FILENO][0], *newch, bytes_max, 0)) > 0){
|
||||
+ rv = ERRDATA;
|
||||
r = filter_error(*newch, r);
|
||||
break;
|
||||
}
|
||||
- free(*newch);
|
||||
if (r == 0)
|
||||
- rv = makeerror(newch, n, "Read failed, %s",
|
||||
- strerror(errno));
|
||||
- else
|
||||
- rv = makeerror(newch, n, "No data");
|
||||
+ break;
|
||||
+ free(*newch);
|
||||
+ rv = ERRDATA;
|
||||
+ rv = makeerror(newch, n, "Read stderr failed, %s",
|
||||
+ strerror(errno));
|
||||
goto err;
|
||||
}
|
||||
-
|
||||
*n = r;
|
||||
/* NUL terminate, as every buffer is handled here. */
|
||||
(*newch)[*n] = '\0';
|
||||
77
SOURCES/file-5.33-floating-point-exception.patch
Normal file
77
SOURCES/file-5.33-floating-point-exception.patch
Normal file
@ -0,0 +1,77 @@
|
||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||
index a9b245d..c7f184d 100644
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -17,10 +17,10 @@ MINGWLIBS = -lgnurx -lshlwapi
|
||||
else
|
||||
MINGWLIBS =
|
||||
endif
|
||||
-libmagic_la_LIBADD = $(LTLIBOBJS) $(MINGWLIBS)
|
||||
+libmagic_la_LIBADD = -lm $(LTLIBOBJS) $(MINGWLIBS)
|
||||
|
||||
file_SOURCES = file.c seccomp.c
|
||||
-file_LDADD = libmagic.la
|
||||
+file_LDADD = libmagic.la -lm
|
||||
CLEANFILES = magic.h
|
||||
EXTRA_DIST = magic.h.in
|
||||
HDR= $(top_srcdir)/src/magic.h.in
|
||||
diff --git a/src/softmagic.c b/src/softmagic.c
|
||||
index 3e76517..57b4677 100644
|
||||
--- a/src/softmagic.c
|
||||
+++ b/src/softmagic.c
|
||||
@@ -37,6 +37,7 @@ FILE_RCSID("@(#)$File: softmagic.c,v 1.259 2018/03/11 01:23:52 christos Exp $")
|
||||
|
||||
#include "magic.h"
|
||||
#include <assert.h>
|
||||
+#include <math.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <stdlib.h>
|
||||
@@ -1893,19 +1894,19 @@ magiccheck(struct magic_set *ms, struct magic *m)
|
||||
break;
|
||||
|
||||
case '!':
|
||||
- matched = fv != fl;
|
||||
+ matched = isunordered(fl, fv) ? 1 : fv != fl;
|
||||
break;
|
||||
|
||||
case '=':
|
||||
- matched = fv == fl;
|
||||
+ matched = isunordered(fl, fv) ? 0 : fv == fl;
|
||||
break;
|
||||
|
||||
case '>':
|
||||
- matched = fv > fl;
|
||||
+ matched = isgreater(fv, fl);
|
||||
break;
|
||||
|
||||
case '<':
|
||||
- matched = fv < fl;
|
||||
+ matched = isless(fv, fl);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1926,19 +1927,19 @@ magiccheck(struct magic_set *ms, struct magic *m)
|
||||
break;
|
||||
|
||||
case '!':
|
||||
- matched = dv != dl;
|
||||
+ matched = isunordered(dv, dl) ? 1 : dv != dl;
|
||||
break;
|
||||
|
||||
case '=':
|
||||
- matched = dv == dl;
|
||||
+ matched = isunordered(dv, dl) ? 0 : dv == dl;
|
||||
break;
|
||||
|
||||
case '>':
|
||||
- matched = dv > dl;
|
||||
+ matched = isgreater(dv, dl);
|
||||
break;
|
||||
|
||||
case '<':
|
||||
- matched = dv < dl;
|
||||
+ matched = isless(dv, dl);
|
||||
break;
|
||||
|
||||
default:
|
||||
30
SOURCES/file-5.33-gif.patch
Normal file
30
SOURCES/file-5.33-gif.patch
Normal file
@ -0,0 +1,30 @@
|
||||
From f0e846528e1c839ab44895a1f13d167a4ad8def3 Mon Sep 17 00:00:00 2001
|
||||
From: Marek Cermak <macermak@redhat.com>
|
||||
Date: Wed, 20 Dec 2017 16:18:46 +0100
|
||||
Subject: [PATCH] Resolves: #1515180 - image/gif classifed as
|
||||
application/octet-stream
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1515180
|
||||
|
||||
Signed-off-by: Marek Cermak <macermak@redhat.com>
|
||||
---
|
||||
magic/Magdir/images | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/magic/Magdir/images b/magic/Magdir/images
|
||||
index 69e8e90f..76f7e7da 100644
|
||||
--- a/magic/Magdir/images
|
||||
+++ b/magic/Magdir/images
|
||||
@@ -468,7 +468,9 @@
|
||||
!:mime image/x-unknown
|
||||
|
||||
# GIF
|
||||
+# Strength set up to beat 0x55AA DOS/MBR signature word lookups (+65)
|
||||
0 string GIF8 GIF image data
|
||||
+!:strength +80
|
||||
!:mime image/gif
|
||||
!:apple 8BIMGIFf
|
||||
>4 string 7a \b, version 8%s,
|
||||
--
|
||||
2.13.6
|
||||
|
||||
22
SOURCES/file-5.33-more-python.patch
Normal file
22
SOURCES/file-5.33-more-python.patch
Normal file
@ -0,0 +1,22 @@
|
||||
diff -urp file-5.33.orig/magic/Magdir/python file-5.33/magic/Magdir/python
|
||||
--- file-5.33.orig/magic/Magdir/python 2020-12-17 13:19:08.610803723 -0500
|
||||
+++ file-5.33/magic/Magdir/python 2020-12-17 13:26:07.346954161 -0500
|
||||
@@ -43,6 +43,18 @@
|
||||
!:strength + 15
|
||||
!:mime text/x-python
|
||||
|
||||
+0 search/1/wt #!\ /usr/libexec/platform-python Python script text executable
|
||||
+!:strength + 15
|
||||
+!:mime text/x-python
|
||||
+
|
||||
+0 search/1/wt #!\ /usr/bin/python2 Python script text executable
|
||||
+!:strength + 15
|
||||
+!:mime text/x-python
|
||||
+
|
||||
+0 search/1/wt #!\ /usr/bin/python3 Python script text executable
|
||||
+!:strength + 15
|
||||
+!:mime text/x-python
|
||||
+
|
||||
|
||||
# from module.submodule import func1, func2
|
||||
0 regex \^from[\040\t\f\r\n]+([A-Za-z0-9_]|\\.)+[\040\t\f\r\n]+import.*$ Python script text executable
|
||||
24
SOURCES/file-5.33-msooxml-magic.patch
Normal file
24
SOURCES/file-5.33-msooxml-magic.patch
Normal file
@ -0,0 +1,24 @@
|
||||
diff --git a/magic/Magdir/msooxml b/magic/Magdir/msooxml
|
||||
index bde098e..7d0bcc7 100644
|
||||
--- a/magic/Magdir/msooxml
|
||||
+++ b/magic/Magdir/msooxml
|
||||
@@ -28,16 +28,16 @@
|
||||
# skip to the second local file header
|
||||
# since some documents include a 520-byte extra field following the file
|
||||
# header, we need to scan for the next header
|
||||
->>(18.l+49) search/2000 PK\003\004
|
||||
+>>(18.l+49) search/6000 PK\003\004
|
||||
# now skip to the *third* local file header; again, we need to scan due to a
|
||||
# 520-byte extra field following the file header
|
||||
->>>&26 search/1000 PK\003\004
|
||||
+>>>&26 search/6000 PK\003\004
|
||||
# and check the subdirectory name to determine which type of OOXML
|
||||
# file we have. Correct the mimetype with the registered ones:
|
||||
# http://technet.microsoft.com/en-us/library/cc179224.aspx
|
||||
>>>>&26 use msooxml
|
||||
>>>>&26 default x
|
||||
# OpenOffice/Libreoffice orders ZIP entry differently, so check the 4th file
|
||||
->>>>>&26 search/1000 PK\003\004
|
||||
+>>>>>&26 search/6000 PK\003\004
|
||||
>>>>>>&26 use msooxml
|
||||
>>>>>>&26 default x Microsoft OOXML
|
||||
35
SOURCES/file-5.33-other-languages.patch
Normal file
35
SOURCES/file-5.33-other-languages.patch
Normal file
@ -0,0 +1,35 @@
|
||||
diff -urp file-5.33.orig/magic/Magdir/commands file-5.33/magic/Magdir/commands
|
||||
--- file-5.33.orig/magic/Magdir/commands 2017-08-14 03:40:38.000000000 -0400
|
||||
+++ file-5.33/magic/Magdir/commands 2020-12-17 13:30:07.063162185 -0500
|
||||
@@ -8,6 +8,8 @@
|
||||
!:mime text/x-shellscript
|
||||
0 string/wb #!\ /bin/sh POSIX shell script executable (binary data)
|
||||
!:mime text/x-shellscript
|
||||
+0 string/w #!\ /usr/bin/sh Shell script text executable
|
||||
+!:mime text/x-shellscript
|
||||
|
||||
0 string/wt #!\ /bin/csh C shell script text executable
|
||||
!:mime text/x-shellscript
|
||||
diff -urp file-5.33.orig/magic/Magdir/javascript file-5.33/magic/Magdir/javascript
|
||||
--- file-5.33.orig/magic/Magdir/javascript 2012-06-16 09:30:36.000000000 -0400
|
||||
+++ file-5.33/magic/Magdir/javascript 2020-12-17 13:36:56.276843745 -0500
|
||||
@@ -15,3 +15,5 @@
|
||||
!:mime application/javascript
|
||||
0 search/1 #!/usr/bin/env\ nodejs Node.js script text executable
|
||||
!:mime application/javascript
|
||||
+0 string/wt #!\ /usr/bin/gjs Gnome Javascript text executable
|
||||
+!:mime text/javascript
|
||||
diff -urp file-5.33.orig/magic/Magdir/tcl file-5.33/magic/Magdir/tcl
|
||||
--- file-5.33.orig/magic/Magdir/tcl 2014-01-08 17:29:21.000000000 -0500
|
||||
+++ file-5.33/magic/Magdir/tcl 2020-12-17 13:36:20.855391803 -0500
|
||||
@@ -12,6 +12,10 @@
|
||||
!:mime text/x-tcl
|
||||
0 search/1 #!\ /usr/bin/env\ tcl Tcl script text executable
|
||||
!:mime text/x-tcl
|
||||
+0 string/wt #!\ /usr/bin/jimsh Jim TCL text executable
|
||||
+!:mime text/x-tcl
|
||||
+0 search/1/wt #!\ /usr/bin/tclsh Tcl/Tk script text executable
|
||||
+!:mime text/x-tcl
|
||||
0 search/1/w #!\ /usr/bin/wish Tcl/Tk script text executable
|
||||
!:mime text/x-tcl
|
||||
0 search/1/w #!\ /usr/local/bin/wish Tcl/Tk script text executable
|
||||
34
SOURCES/file-5.33-pie-executable-revert.patch
Normal file
34
SOURCES/file-5.33-pie-executable-revert.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From 719116b196fd873f5a463dfdb0fd6258cee51591 Mon Sep 17 00:00:00 2001
|
||||
From: Kamil Dudka <kdudka@redhat.com>
|
||||
Date: Tue, 22 May 2018 18:18:06 +0200
|
||||
Subject: [PATCH] Revert "add a conditional in description"
|
||||
|
||||
Upstream-commit: 6876ebadcdf27224b3ffa9dfa4343127aa97c9b2
|
||||
|
||||
... and partially revert upstream commit
|
||||
7dbecfe406a6bb2de1fe7ec2fe413dcd8871ac74
|
||||
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
magic/Magdir/elf | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/magic/Magdir/elf b/magic/Magdir/elf
|
||||
index 7fd5de1..dba5a73 100644
|
||||
--- a/magic/Magdir/elf
|
||||
+++ b/magic/Magdir/elf
|
||||
@@ -48,9 +48,8 @@
|
||||
!:mime application/x-object
|
||||
>16 leshort 2 executable,
|
||||
!:mime application/x-executable
|
||||
->16 leshort 3 ${x?pie executable:shared object}
|
||||
-
|
||||
-!:mime application/x-${x?pie-executable:sharedlib}
|
||||
+>16 leshort 3 shared object,
|
||||
+!:mime application/x-sharedlib
|
||||
>16 leshort 4 core file
|
||||
!:mime application/x-coredump
|
||||
# Core file detection is not reliable.
|
||||
--
|
||||
2.14.3
|
||||
|
||||
35
SOURCES/file-5.33-ppc-swap.patch
Normal file
35
SOURCES/file-5.33-ppc-swap.patch
Normal file
@ -0,0 +1,35 @@
|
||||
From ed6062995ae60d6772f2dabc39e03cbf28ee7343 Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Mon, 16 Jul 2018 12:32:08 +0000
|
||||
Subject: [PATCH] more info for ppc swapspace (Kamil Dudka)
|
||||
|
||||
Upstream-commit: 65f9c7053548df8945df600c07123c9151531ee6
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
magic/Magdir/linux | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/magic/Magdir/linux b/magic/Magdir/linux
|
||||
index 0630a8a..11e9237 100644
|
||||
--- a/magic/Magdir/linux
|
||||
+++ b/magic/Magdir/linux
|
||||
@@ -94,6 +94,16 @@
|
||||
# From Daniel Novotny <dnovotny@redhat.com>
|
||||
# swap file for PowerPC
|
||||
65526 string SWAPSPACE2 Linux/ppc swap file
|
||||
+>0x400 long x version %d,
|
||||
+>0x404 long x size %d pages,
|
||||
+>1052 string \0 no label,
|
||||
+>1052 string >\0 LABEL=%s,
|
||||
+>0x40c belong x UUID=%08x
|
||||
+>0x410 beshort x \b-%04x
|
||||
+>0x412 beshort x \b-%04x
|
||||
+>0x414 beshort x \b-%04x
|
||||
+>0x416 belong x \b-%08x
|
||||
+>0x41a beshort x \b%04x
|
||||
16374 string SWAPSPACE2 Linux/ia64 swap file
|
||||
#
|
||||
# Linux kernel boot images, from Albert Cahalan <acahalan@cs.uml.edu>
|
||||
--
|
||||
2.14.4
|
||||
|
||||
23
SOURCES/file-5.33-python-space.patch
Normal file
23
SOURCES/file-5.33-python-space.patch
Normal file
@ -0,0 +1,23 @@
|
||||
diff -urp file-5.33.orig/magic/Magdir/python file-5.33/magic/Magdir/python
|
||||
--- file-5.33.orig/magic/Magdir/python 2017-08-14 03:40:38.000000000 -0400
|
||||
+++ file-5.33/magic/Magdir/python 2020-12-14 12:24:42.084905613 -0500
|
||||
@@ -30,16 +30,16 @@
|
||||
0 belong 0x3e0d0d0a python 3.7 byte-compiled
|
||||
|
||||
|
||||
-0 search/1/w #!\ /usr/bin/python Python script text executable
|
||||
+0 search/1/w #!\040/usr/bin/python Python script text executable
|
||||
!:strength + 15
|
||||
!:mime text/x-python
|
||||
-0 search/1/w #!\ /usr/local/bin/python Python script text executable
|
||||
+0 search/1/w #!\040/usr/local/bin/python Python script text executable
|
||||
!:strength + 15
|
||||
!:mime text/x-python
|
||||
0 search/1 #!/usr/bin/env\ python Python script text executable
|
||||
!:strength + 15
|
||||
!:mime text/x-python
|
||||
-0 search/10 #!\ /usr/bin/env\ python Python script text executable
|
||||
+0 search/10 #!\040/usr/bin/env\ python Python script text executable
|
||||
!:strength + 15
|
||||
!:mime text/x-python
|
||||
|
||||
53
SOURCES/file-5.33-seccomp.patch
Normal file
53
SOURCES/file-5.33-seccomp.patch
Normal file
@ -0,0 +1,53 @@
|
||||
From 4ae8a24b5ccbee904875a10b7b2301369080a88d Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Sun, 6 May 2018 16:36:41 +0000
|
||||
Subject: [PATCH] add more syscalls; newfstatat is used for stat'ing the magic
|
||||
file, getdents64 is used for getting the magic entries during compilation.
|
||||
|
||||
Upstream-commit: aeddbff330fad0edff2ab4b02dbf0863cd593c3c
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
src/seccomp.c | 15 ++++++++-------
|
||||
1 file changed, 8 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/seccomp.c b/src/seccomp.c
|
||||
index 7c8a3144..481a5624 100644
|
||||
--- a/src/seccomp.c
|
||||
+++ b/src/seccomp.c
|
||||
@@ -59,12 +59,7 @@ enable_sandbox_basic(void)
|
||||
if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) == -1)
|
||||
return -1;
|
||||
|
||||
-#if 0
|
||||
- // prevent escape via ptrace
|
||||
- prctl(PR_SET_DUMPABLE, 0);
|
||||
-#endif
|
||||
-
|
||||
- if (prctl (PR_SET_DUMPABLE, 0, 0, 0, 0) == -1)
|
||||
+ if (prctl(PR_SET_DUMPABLE, 0, 0, 0, 0) == -1)
|
||||
return -1;
|
||||
|
||||
// initialize the filter
|
||||
@@ -171,6 +166,9 @@ enable_sandbox_full(void)
|
||||
ALLOW_RULE(fcntl);
|
||||
ALLOW_RULE(fstat);
|
||||
ALLOW_RULE(getdents);
|
||||
+#ifdef __NR_getdents64
|
||||
+ ALLOW_RULE(getdents64);
|
||||
+#endif
|
||||
ALLOW_RULE(ioctl);
|
||||
ALLOW_RULE(lseek);
|
||||
ALLOW_RULE(lstat);
|
||||
@@ -178,6 +176,9 @@ enable_sandbox_full(void)
|
||||
ALLOW_RULE(mprotect);
|
||||
ALLOW_RULE(mremap);
|
||||
ALLOW_RULE(munmap);
|
||||
+#ifdef __NR_newfstatat
|
||||
+ ALLOW_RULE(newfstatat);
|
||||
+#endif
|
||||
ALLOW_RULE(open);
|
||||
ALLOW_RULE(openat);
|
||||
ALLOW_RULE(pread64);
|
||||
--
|
||||
2.17.0
|
||||
|
||||
236
SOURCES/file-5.33-static-PIE-binaries-0.patch
Normal file
236
SOURCES/file-5.33-static-PIE-binaries-0.patch
Normal file
@ -0,0 +1,236 @@
|
||||
From 3951ed6ab1ba4b7d6d4d2dd5700858c470627c46 Mon Sep 17 00:00:00 2001
|
||||
From: Vincent Mihalkovic <vmihalko@redhat.com>
|
||||
Date: Thu, 9 Feb 2023 16:46:43 +0100
|
||||
Subject: [PATCH] store copy of the mode info in the magic_set
|
||||
|
||||
---
|
||||
src/file.h | 1 +
|
||||
src/funcs.c | 53 +++++++++++++++++++++++++++++++------------------
|
||||
src/softmagic.c | 27 +++++++++++--------------
|
||||
3 files changed, 47 insertions(+), 34 deletions(-)
|
||||
|
||||
diff --git a/src/file.h b/src/file.h
|
||||
index 66598bc..b3d015d 100644
|
||||
--- a/src/file.h
|
||||
+++ b/src/file.h
|
||||
@@ -413,6 +413,7 @@ struct magic_set {
|
||||
#define EVENT_HAD_ERR 0x01
|
||||
const char *file;
|
||||
size_t line; /* current magic line number */
|
||||
+ mode_t mode; /* copy of current stat mode */
|
||||
|
||||
/* data for searches */
|
||||
struct {
|
||||
diff --git a/src/funcs.c b/src/funcs.c
|
||||
index f59f4a1..0bf92fe 100644
|
||||
--- a/src/funcs.c
|
||||
+++ b/src/funcs.c
|
||||
@@ -27,7 +27,7 @@
|
||||
#include "file.h"
|
||||
|
||||
#ifndef lint
|
||||
-FILE_RCSID("@(#)$File: funcs.c,v 1.94 2017/11/02 20:25:39 christos Exp $")
|
||||
+FILE_RCSID("@(#)$File: funcs.c,v 1.95 2018/05/24 18:09:17 christos Exp $")
|
||||
#endif /* lint */
|
||||
|
||||
#include "magic.h"
|
||||
@@ -183,9 +183,11 @@ file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((__u
|
||||
const char *type = "application/octet-stream";
|
||||
const char *def = "data";
|
||||
const char *ftype = NULL;
|
||||
+ char *rbuf = NULL;
|
||||
struct buffer b;
|
||||
|
||||
buffer_init(&b, fd, buf, nb);
|
||||
+ ms->mode = b.st.st_mode;
|
||||
|
||||
if (nb == 0) {
|
||||
def = "empty";
|
||||
@@ -248,31 +250,43 @@ file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((__u
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
+#ifdef BUILTIN_ELF
|
||||
+ if ((ms->flags & MAGIC_NO_CHECK_ELF) == 0 && nb > 5 && fd != -1) {
|
||||
+ file_pushbuf_t *pb;
|
||||
+ /*
|
||||
+ * We matched something in the file, so this
|
||||
+ * *might* be an ELF file, and the file is at
|
||||
+ * least 5 bytes long, so if it's an ELF file
|
||||
+ * it has at least one byte past the ELF magic
|
||||
+ * number - try extracting information from the
|
||||
+ * ELF headers that cannot easily be extracted
|
||||
+ * with rules in the magic file. We we don't
|
||||
+ * print the information yet.
|
||||
+ */
|
||||
+ if ((pb = file_push_buffer(ms)) == NULL)
|
||||
+ return -1;
|
||||
+
|
||||
+ rv = file_tryelf(ms, &b);
|
||||
+ rbuf = file_pop_buffer(ms, pb);
|
||||
+ if (rv != 1) {
|
||||
+ free(rbuf);
|
||||
+ rbuf = NULL;
|
||||
+ }
|
||||
+ if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
+ (void)fprintf(stderr, "[try elf %d]\n", m);
|
||||
+ }
|
||||
+#endif
|
||||
|
||||
/* try soft magic tests */
|
||||
if ((ms->flags & MAGIC_NO_CHECK_SOFT) == 0) {
|
||||
m = file_softmagic(ms, &b, NULL, NULL, BINTEST, looks_text);
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr, "[try softmagic %d]\n", m);
|
||||
+ if (m == 1 && rbuf) {
|
||||
+ if (file_printf(ms, "%s", rbuf) == -1)
|
||||
+ goto done;
|
||||
+ }
|
||||
if (m) {
|
||||
-#ifdef BUILTIN_ELF
|
||||
- if ((ms->flags & MAGIC_NO_CHECK_ELF) == 0 && m == 1 &&
|
||||
- nb > 5 && fd != -1) {
|
||||
- /*
|
||||
- * We matched something in the file, so this
|
||||
- * *might* be an ELF file, and the file is at
|
||||
- * least 5 bytes long, so if it's an ELF file
|
||||
- * it has at least one byte past the ELF magic
|
||||
- * number - try extracting information from the
|
||||
- * ELF headers that cannot easily * be
|
||||
- * extracted with rules in the magic file.
|
||||
- */
|
||||
- m = file_tryelf(ms, &b);
|
||||
- if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
- (void)fprintf(stderr, "[try elf %d]\n",
|
||||
- m);
|
||||
- }
|
||||
-#endif
|
||||
if (checkdone(ms, &rv))
|
||||
goto done;
|
||||
}
|
||||
@@ -318,6 +332,7 @@ simple:
|
||||
#if HAVE_FORK
|
||||
done_encoding:
|
||||
#endif
|
||||
+ free(rbuf);
|
||||
buffer_fini(&b);
|
||||
if (rv)
|
||||
return rv;
|
||||
diff --git a/src/softmagic.c b/src/softmagic.c
|
||||
index 57b4677..0197ec4 100644
|
||||
--- a/src/softmagic.c
|
||||
+++ b/src/softmagic.c
|
||||
@@ -54,8 +54,7 @@ private int mget(struct magic_set *, struct magic *, const struct buffer *,
|
||||
private int msetoffset(struct magic_set *, struct magic *, struct buffer *,
|
||||
const struct buffer *, size_t, unsigned int);
|
||||
private int magiccheck(struct magic_set *, struct magic *);
|
||||
-private int32_t mprint(struct magic_set *, struct magic *,
|
||||
- const struct buffer *);
|
||||
+private int32_t mprint(struct magic_set *, struct magic *);
|
||||
private int moffset(struct magic_set *, struct magic *, const struct buffer *,
|
||||
int32_t *);
|
||||
private void mdebug(uint32_t, const char *, size_t);
|
||||
@@ -63,8 +62,7 @@ private int mcopy(struct magic_set *, union VALUETYPE *, int, int,
|
||||
const unsigned char *, uint32_t, size_t, struct magic *);
|
||||
private int mconvert(struct magic_set *, struct magic *, int);
|
||||
private int print_sep(struct magic_set *, int);
|
||||
-private int handle_annotation(struct magic_set *, struct magic *,
|
||||
- const struct buffer *, int);
|
||||
+private int handle_annotation(struct magic_set *, struct magic *, int);
|
||||
private int cvt_8(union VALUETYPE *, const struct magic *);
|
||||
private int cvt_16(union VALUETYPE *, const struct magic *);
|
||||
private int cvt_32(union VALUETYPE *, const struct magic *);
|
||||
@@ -241,7 +239,7 @@ flush:
|
||||
goto flush;
|
||||
}
|
||||
|
||||
- if ((e = handle_annotation(ms, m, b, firstline)) != 0) {
|
||||
+ if ((e = handle_annotation(ms, m, firstline)) != 0) {
|
||||
*need_separator = 1;
|
||||
*printed_something = 1;
|
||||
*returnval = 1;
|
||||
@@ -259,7 +257,7 @@ flush:
|
||||
return -1;
|
||||
}
|
||||
|
||||
- if (print && mprint(ms, m, b) == -1)
|
||||
+ if (print && mprint(ms, m) == -1)
|
||||
return -1;
|
||||
|
||||
switch (moffset(ms, m, &bb, &ms->c.li[cont_level].off)) {
|
||||
@@ -340,7 +338,7 @@ flush:
|
||||
} else
|
||||
ms->c.li[cont_level].got_match = 1;
|
||||
|
||||
- if ((e = handle_annotation(ms, m, b, firstline))
|
||||
+ if ((e = handle_annotation(ms, m, firstline))
|
||||
!= 0) {
|
||||
*need_separator = 1;
|
||||
*printed_something = 1;
|
||||
@@ -374,7 +372,7 @@ flush:
|
||||
return -1;
|
||||
*need_separator = 0;
|
||||
}
|
||||
- if (print && mprint(ms, m, b) == -1)
|
||||
+ if (print && mprint(ms, m) == -1)
|
||||
return -1;
|
||||
|
||||
switch (moffset(ms, m, &bb,
|
||||
@@ -454,7 +452,7 @@ strndup(const char *str, size_t n)
|
||||
#endif /* HAVE_STRNDUP */
|
||||
|
||||
static int
|
||||
-varexpand(char *buf, size_t len, const struct buffer *b, const char *str)
|
||||
+varexpand(struct magic_set *ms, char *buf, size_t len, const char *str)
|
||||
{
|
||||
const char *ptr, *sptr, *e, *t, *ee, *et;
|
||||
size_t l;
|
||||
@@ -479,7 +477,7 @@ varexpand(char *buf, size_t len, const struct buffer *b, const char *str)
|
||||
return -1;
|
||||
switch (*ptr) {
|
||||
case 'x':
|
||||
- if (b->st.st_mode & 0111) {
|
||||
+ if (ms->mode & 0111) {
|
||||
ptr = t;
|
||||
l = et - t;
|
||||
} else {
|
||||
@@ -509,7 +507,7 @@ varexpand(char *buf, size_t len, const struct buffer *b, const char *str)
|
||||
|
||||
|
||||
private int32_t
|
||||
-mprint(struct magic_set *ms, struct magic *m, const struct buffer *b)
|
||||
+mprint(struct magic_set *ms, struct magic *m)
|
||||
{
|
||||
uint64_t v;
|
||||
float vf;
|
||||
@@ -519,7 +517,7 @@ mprint(struct magic_set *ms, struct magic *m, const struct buffer *b)
|
||||
const char *desc;
|
||||
union VALUETYPE *p = &ms->ms_value;
|
||||
|
||||
- if (varexpand(ebuf, sizeof(ebuf), b, m->desc) == -1)
|
||||
+ if (varexpand(ms, ebuf, sizeof(ebuf), m->desc) == -1)
|
||||
desc = m->desc;
|
||||
else
|
||||
desc = ebuf;
|
||||
@@ -2166,8 +2164,7 @@ magiccheck(struct magic_set *ms, struct magic *m)
|
||||
}
|
||||
|
||||
private int
|
||||
-handle_annotation(struct magic_set *ms, struct magic *m, const struct buffer *b,
|
||||
- int firstline)
|
||||
+handle_annotation(struct magic_set *ms, struct magic *m, int firstline)
|
||||
{
|
||||
if ((ms->flags & MAGIC_APPLE) && m->apple[0]) {
|
||||
if (!firstline && file_printf(ms, "\n- ") == -1)
|
||||
@@ -2188,7 +2185,7 @@ handle_annotation(struct magic_set *ms, struct magic *m, const struct buffer *b,
|
||||
const char *p;
|
||||
if (!firstline && file_printf(ms, "\n- ") == -1)
|
||||
return -1;
|
||||
- if (varexpand(buf, sizeof(buf), b, m->mimetype) == -1)
|
||||
+ if (varexpand(ms, buf, sizeof(buf), m->mimetype) == -1)
|
||||
p = m->mimetype;
|
||||
else
|
||||
p = buf;
|
||||
--
|
||||
2.39.1
|
||||
|
||||
767
SOURCES/file-5.33-static-PIE-binaries-1.patch
Normal file
767
SOURCES/file-5.33-static-PIE-binaries-1.patch
Normal file
@ -0,0 +1,767 @@
|
||||
From 493e2676626b530a45fcc17040915f34fa0c5dd3 Mon Sep 17 00:00:00 2001
|
||||
From: Vincent Mihalkovic <vmihalko@redhat.com>
|
||||
Date: Mon, 6 Feb 2023 14:39:29 +0100
|
||||
Subject: [PATCH] add parsing for dynamic sections
|
||||
|
||||
9109a696f3289ba00eaa222fd432755ec4287e28
|
||||
---
|
||||
src/readelf.c | 295 +++++++++++++++++++++++++++++++-------------------
|
||||
src/readelf.h | 103 ++++++++++++++++++
|
||||
2 files changed, 289 insertions(+), 109 deletions(-)
|
||||
|
||||
diff --git a/src/readelf.c b/src/readelf.c
|
||||
index c101483..cdc211f 100644
|
||||
--- a/src/readelf.c
|
||||
+++ b/src/readelf.c
|
||||
@@ -62,13 +62,12 @@ private uint64_t getu64(int, uint64_t);
|
||||
|
||||
#define MAX_PHNUM 128
|
||||
#define MAX_SHNUM 32768
|
||||
-#define SIZE_UNKNOWN ((off_t)-1)
|
||||
+#define SIZE_UNKNOWN CAST(off_t, -1)
|
||||
|
||||
private int
|
||||
toomany(struct magic_set *ms, const char *name, uint16_t num)
|
||||
{
|
||||
- if (file_printf(ms, ", too many %s (%u)", name, num
|
||||
- ) == -1)
|
||||
+ if (file_printf(ms, ", too many %s (%u)", name, num) == -1)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
@@ -143,54 +142,55 @@ getu64(int swap, uint64_t value)
|
||||
#define elf_getu64(swap, value) getu64(swap, value)
|
||||
|
||||
#define xsh_addr (clazz == ELFCLASS32 \
|
||||
- ? (void *)&sh32 \
|
||||
- : (void *)&sh64)
|
||||
+ ? CAST(void *, &sh32) \
|
||||
+ : CAST(void *, &sh64))
|
||||
#define xsh_sizeof (clazz == ELFCLASS32 \
|
||||
? sizeof(sh32) \
|
||||
: sizeof(sh64))
|
||||
-#define xsh_size (size_t)(clazz == ELFCLASS32 \
|
||||
+#define xsh_size CAST(size_t, (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, sh32.sh_size) \
|
||||
- : elf_getu64(swap, sh64.sh_size))
|
||||
-#define xsh_offset (off_t)(clazz == ELFCLASS32 \
|
||||
+ : elf_getu64(swap, sh64.sh_size)))
|
||||
+#define xsh_offset CAST(off_t, (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, sh32.sh_offset) \
|
||||
- : elf_getu64(swap, sh64.sh_offset))
|
||||
+ : elf_getu64(swap, sh64.sh_offset)))
|
||||
#define xsh_type (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, sh32.sh_type) \
|
||||
: elf_getu32(swap, sh64.sh_type))
|
||||
#define xsh_name (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, sh32.sh_name) \
|
||||
: elf_getu32(swap, sh64.sh_name))
|
||||
+
|
||||
#define xph_addr (clazz == ELFCLASS32 \
|
||||
- ? (void *) &ph32 \
|
||||
- : (void *) &ph64)
|
||||
+ ? CAST(void *, &ph32) \
|
||||
+ : CAST(void *, &ph64))
|
||||
#define xph_sizeof (clazz == ELFCLASS32 \
|
||||
? sizeof(ph32) \
|
||||
: sizeof(ph64))
|
||||
#define xph_type (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, ph32.p_type) \
|
||||
: elf_getu32(swap, ph64.p_type))
|
||||
-#define xph_offset (off_t)(clazz == ELFCLASS32 \
|
||||
+#define xph_offset CAST(off_t, (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, ph32.p_offset) \
|
||||
- : elf_getu64(swap, ph64.p_offset))
|
||||
-#define xph_align (size_t)((clazz == ELFCLASS32 \
|
||||
- ? (off_t) (ph32.p_align ? \
|
||||
- elf_getu32(swap, ph32.p_align) : 4) \
|
||||
- : (off_t) (ph64.p_align ? \
|
||||
- elf_getu64(swap, ph64.p_align) : 4)))
|
||||
-#define xph_vaddr (size_t)((clazz == ELFCLASS32 \
|
||||
- ? (off_t) (ph32.p_vaddr ? \
|
||||
- elf_getu32(swap, ph32.p_vaddr) : 4) \
|
||||
- : (off_t) (ph64.p_vaddr ? \
|
||||
- elf_getu64(swap, ph64.p_vaddr) : 4)))
|
||||
-#define xph_filesz (size_t)((clazz == ELFCLASS32 \
|
||||
+ : elf_getu64(swap, ph64.p_offset)))
|
||||
+#define xph_align CAST(size_t, (clazz == ELFCLASS32 \
|
||||
+ ? CAST(off_t, (ph32.p_align ? \
|
||||
+ elf_getu32(swap, ph32.p_align) : 4))\
|
||||
+ : CAST(off_t, (ph64.p_align ? \
|
||||
+ elf_getu64(swap, ph64.p_align) : 4))))
|
||||
+#define xph_vaddr CAST(size_t, (clazz == ELFCLASS32 \
|
||||
+ ? CAST(off_t, (ph32.p_vaddr ? \
|
||||
+ elf_getu32(swap, ph32.p_vaddr) : 4))\
|
||||
+ : CAST(off_t, (ph64.p_vaddr ? \
|
||||
+ elf_getu64(swap, ph64.p_vaddr) : 4))))
|
||||
+#define xph_filesz CAST(size_t, (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, ph32.p_filesz) \
|
||||
: elf_getu64(swap, ph64.p_filesz)))
|
||||
-#define xnh_addr (clazz == ELFCLASS32 \
|
||||
- ? (void *)&nh32 \
|
||||
- : (void *)&nh64)
|
||||
-#define xph_memsz (size_t)((clazz == ELFCLASS32 \
|
||||
+#define xph_memsz CAST(size_t, ((clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, ph32.p_memsz) \
|
||||
- : elf_getu64(swap, ph64.p_memsz)))
|
||||
+ : elf_getu64(swap, ph64.p_memsz))))
|
||||
+#define xnh_addr (clazz == ELFCLASS32 \
|
||||
+ ? CAST(void *, &nh32) \
|
||||
+ : CAST(void *, &nh64))
|
||||
#define xnh_sizeof (clazz == ELFCLASS32 \
|
||||
? sizeof(nh32) \
|
||||
: sizeof(nh64))
|
||||
@@ -203,24 +203,36 @@ getu64(int swap, uint64_t value)
|
||||
#define xnh_descsz (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, nh32.n_descsz) \
|
||||
: elf_getu32(swap, nh64.n_descsz))
|
||||
-#define prpsoffsets(i) (clazz == ELFCLASS32 \
|
||||
- ? prpsoffsets32[i] \
|
||||
- : prpsoffsets64[i])
|
||||
+
|
||||
+#define xdh_addr (clazz == ELFCLASS32 \
|
||||
+ ? CAST(void *, &dh32) \
|
||||
+ : CAST(void *, &dh64))
|
||||
+#define xdh_sizeof (clazz == ELFCLASS32 \
|
||||
+ ? sizeof(dh32) \
|
||||
+ : sizeof(dh64))
|
||||
+#define xdh_tag (clazz == ELFCLASS32 \
|
||||
+ ? elf_getu32(swap, dh32.d_tag) \
|
||||
+ : elf_getu64(swap, dh64.d_tag))
|
||||
+#define xdh_val (clazz == ELFCLASS32 \
|
||||
+ ? elf_getu32(swap, dh32.d_un.d_val) \
|
||||
+ : elf_getu64(swap, dh64.d_un.d_val))
|
||||
+
|
||||
#define xcap_addr (clazz == ELFCLASS32 \
|
||||
- ? (void *)&cap32 \
|
||||
- : (void *)&cap64)
|
||||
+ ? CAST(void *, &cap32) \
|
||||
+ : CAST(void *, &cap64))
|
||||
#define xcap_sizeof (clazz == ELFCLASS32 \
|
||||
- ? sizeof cap32 \
|
||||
- : sizeof cap64)
|
||||
+ ? sizeof(cap32) \
|
||||
+ : sizeof(cap64))
|
||||
#define xcap_tag (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, cap32.c_tag) \
|
||||
: elf_getu64(swap, cap64.c_tag))
|
||||
#define xcap_val (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, cap32.c_un.c_val) \
|
||||
: elf_getu64(swap, cap64.c_un.c_val))
|
||||
+
|
||||
#define xauxv_addr (clazz == ELFCLASS32 \
|
||||
- ? (void *)&auxv32 \
|
||||
- : (void *)&auxv64)
|
||||
+ ? CAST(void *, &auxv32) \
|
||||
+ : CAST(void *, &auxv64))
|
||||
#define xauxv_sizeof (clazz == ELFCLASS32 \
|
||||
? sizeof(auxv32) \
|
||||
: sizeof(auxv64))
|
||||
@@ -231,6 +243,10 @@ getu64(int swap, uint64_t value)
|
||||
? elf_getu32(swap, auxv32.a_v) \
|
||||
: elf_getu64(swap, auxv64.a_v))
|
||||
|
||||
+#define prpsoffsets(i) (clazz == ELFCLASS32 \
|
||||
+ ? prpsoffsets32[i] \
|
||||
+ : prpsoffsets64[i])
|
||||
+
|
||||
#ifdef ELFCORE
|
||||
/*
|
||||
* Try larger offsets first to avoid false matches
|
||||
@@ -269,8 +285,8 @@ static const size_t prpsoffsets64[] = {
|
||||
16, /* FreeBSD, 64-bit */
|
||||
};
|
||||
|
||||
-#define NOFFSETS32 (sizeof prpsoffsets32 / sizeof prpsoffsets32[0])
|
||||
-#define NOFFSETS64 (sizeof prpsoffsets64 / sizeof prpsoffsets64[0])
|
||||
+#define NOFFSETS32 (sizeof(prpsoffsets32) / sizeof(prpsoffsets32[0]))
|
||||
+#define NOFFSETS64 (sizeof(prpsoffsets64) / sizeof(prpsoffsets64[0]))
|
||||
|
||||
#define NOFFSETS (clazz == ELFCLASS32 ? NOFFSETS32 : NOFFSETS64)
|
||||
|
||||
@@ -349,7 +365,8 @@ dophn_core(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
* Loop through all the program headers.
|
||||
*/
|
||||
for ( ; num; num--) {
|
||||
- if (pread(fd, xph_addr, xph_sizeof, off) < (ssize_t)xph_sizeof) {
|
||||
+ if (pread(fd, xph_addr, xph_sizeof, off) <
|
||||
+ CAST(ssize_t, xph_sizeof)) {
|
||||
file_badread(ms);
|
||||
return -1;
|
||||
}
|
||||
@@ -392,7 +409,7 @@ static void
|
||||
do_note_netbsd_version(struct magic_set *ms, int swap, void *v)
|
||||
{
|
||||
uint32_t desc;
|
||||
- (void)memcpy(&desc, v, sizeof(desc));
|
||||
+ memcpy(&desc, v, sizeof(desc));
|
||||
desc = elf_getu32(swap, desc);
|
||||
|
||||
if (file_printf(ms, ", for NetBSD") == -1)
|
||||
@@ -438,7 +455,7 @@ do_note_freebsd_version(struct magic_set *ms, int swap, void *v)
|
||||
{
|
||||
uint32_t desc;
|
||||
|
||||
- (void)memcpy(&desc, v, sizeof(desc));
|
||||
+ memcpy(&desc, v, sizeof(desc));
|
||||
desc = elf_getu32(swap, desc);
|
||||
if (file_printf(ms, ", for FreeBSD") == -1)
|
||||
return;
|
||||
@@ -536,7 +553,7 @@ do_bid_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
|
||||
}
|
||||
if (file_printf(ms, ", BuildID[%s]=", btype) == -1)
|
||||
return 1;
|
||||
- (void)memcpy(desc, &nbuf[doff], descsz);
|
||||
+ memcpy(desc, &nbuf[doff], descsz);
|
||||
for (i = 0; i < descsz; i++)
|
||||
if (file_printf(ms, "%02x", desc[i]) == -1)
|
||||
return 1;
|
||||
@@ -560,7 +577,7 @@ do_os_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
|
||||
if (namesz == 4 && strcmp((char *)&nbuf[noff], "GNU") == 0 &&
|
||||
type == NT_GNU_VERSION && descsz == 16) {
|
||||
uint32_t desc[4];
|
||||
- (void)memcpy(desc, &nbuf[doff], sizeof(desc));
|
||||
+ memcpy(desc, &nbuf[doff], sizeof(desc));
|
||||
|
||||
*flags |= FLAGS_DID_OS_NOTE;
|
||||
if (file_printf(ms, ", for GNU/") == -1)
|
||||
@@ -627,7 +644,7 @@ do_os_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
|
||||
*flags |= FLAGS_DID_OS_NOTE;
|
||||
if (file_printf(ms, ", for DragonFly") == -1)
|
||||
return 1;
|
||||
- (void)memcpy(&desc, &nbuf[doff], sizeof(desc));
|
||||
+ memcpy(&desc, &nbuf[doff], sizeof(desc));
|
||||
desc = elf_getu32(swap, desc);
|
||||
if (file_printf(ms, " %d.%d.%d", desc / 100000,
|
||||
desc / 10000 % 10, desc % 10000) == -1)
|
||||
@@ -657,7 +674,7 @@ do_pax_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
|
||||
int did = 0;
|
||||
|
||||
*flags |= FLAGS_DID_NETBSD_PAX;
|
||||
- (void)memcpy(&desc, &nbuf[doff], sizeof(desc));
|
||||
+ memcpy(&desc, &nbuf[doff], sizeof(desc));
|
||||
desc = elf_getu32(swap, desc);
|
||||
|
||||
if (desc && file_printf(ms, ", PaX: ") == -1)
|
||||
@@ -957,7 +974,7 @@ do_auxv_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
|
||||
|
||||
nval = 0;
|
||||
for (size_t off = 0; off + elsize <= descsz; off += elsize) {
|
||||
- (void)memcpy(xauxv_addr, &nbuf[doff + off], xauxv_sizeof);
|
||||
+ memcpy(xauxv_addr, &nbuf[doff + off], xauxv_sizeof);
|
||||
/* Limit processing to 50 vector entries to prevent DoS */
|
||||
if (nval++ >= 50) {
|
||||
file_error(ms, 0, "Too many ELF Auxv elements");
|
||||
@@ -1021,6 +1038,38 @@ do_auxv_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
|
||||
#endif
|
||||
}
|
||||
|
||||
+private size_t
|
||||
+dodynamic(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
|
||||
+ int clazz, int swap)
|
||||
+{
|
||||
+ Elf32_Dyn dh32;
|
||||
+ Elf64_Dyn dh64;
|
||||
+ unsigned char *dbuf = CAST(unsigned char *, vbuf);
|
||||
+
|
||||
+ if (xdh_sizeof + offset > size) {
|
||||
+ /*
|
||||
+ * We're out of note headers.
|
||||
+ */
|
||||
+ return xdh_sizeof + offset;
|
||||
+ }
|
||||
+
|
||||
+ memcpy(xdh_addr, &dbuf[offset], xdh_sizeof);
|
||||
+ offset += xdh_sizeof;
|
||||
+
|
||||
+ switch (xdh_tag) {
|
||||
+ case DT_FLAGS_1:
|
||||
+ if (xdh_val == DF_1_PIE)
|
||||
+ ms->mode |= 0111;
|
||||
+ else
|
||||
+ ms->mode &= ~0111;
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ return offset;
|
||||
+}
|
||||
+
|
||||
+
|
||||
private size_t
|
||||
donote(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
|
||||
int clazz, int swap, size_t align, int *flags, uint16_t *notecount,
|
||||
@@ -1043,7 +1092,7 @@ donote(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
|
||||
return xnh_sizeof + offset;
|
||||
}
|
||||
|
||||
- (void)memcpy(xnh_addr, &nbuf[offset], xnh_sizeof);
|
||||
+ memcpy(xnh_addr, &nbuf[offset], xnh_sizeof);
|
||||
offset += xnh_sizeof;
|
||||
|
||||
namesz = xnh_namesz;
|
||||
@@ -1057,14 +1106,14 @@ donote(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
|
||||
}
|
||||
|
||||
if (namesz & 0x80000000) {
|
||||
- (void)file_printf(ms, ", bad note name size %#lx",
|
||||
- (unsigned long)namesz);
|
||||
+ file_printf(ms, ", bad note name size %#lx",
|
||||
+ CAST(unsigned long, namesz));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (descsz & 0x80000000) {
|
||||
- (void)file_printf(ms, ", bad note description size %#lx",
|
||||
- (unsigned long)descsz);
|
||||
+ file_printf(ms, ", bad note description size %#lx",
|
||||
+ CAST(unsigned long, descsz));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1118,35 +1167,25 @@ donote(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
|
||||
return offset;
|
||||
}
|
||||
|
||||
- if (namesz == 7 && strcmp((char *)&nbuf[noff], "NetBSD") == 0) {
|
||||
+ if (namesz == 7 && strcmp(CAST(char *, &nbuf[noff]), "NetBSD") == 0) {
|
||||
+ int descw, flag;
|
||||
+ const char *str, *tag;
|
||||
if (descsz > 100)
|
||||
descsz = 100;
|
||||
switch (xnh_type) {
|
||||
case NT_NETBSD_VERSION:
|
||||
return offset;
|
||||
case NT_NETBSD_MARCH:
|
||||
- if (*flags & FLAGS_DID_NETBSD_MARCH)
|
||||
- return offset;
|
||||
- *flags |= FLAGS_DID_NETBSD_MARCH;
|
||||
- if (file_printf(ms, ", compiled for: %.*s",
|
||||
- (int)descsz, (const char *)&nbuf[doff]) == -1)
|
||||
- return offset;
|
||||
+ flag = FLAGS_DID_NETBSD_MARCH;
|
||||
+ tag = "compiled for";
|
||||
break;
|
||||
case NT_NETBSD_CMODEL:
|
||||
- if (*flags & FLAGS_DID_NETBSD_CMODEL)
|
||||
- return offset;
|
||||
- *flags |= FLAGS_DID_NETBSD_CMODEL;
|
||||
- if (file_printf(ms, ", compiler model: %.*s",
|
||||
- (int)descsz, (const char *)&nbuf[doff]) == -1)
|
||||
- return offset;
|
||||
+ flag = FLAGS_DID_NETBSD_CMODEL;
|
||||
+ tag = "compiler model";
|
||||
break;
|
||||
case NT_NETBSD_EMULATION:
|
||||
- if (*flags & FLAGS_DID_NETBSD_EMULATION)
|
||||
- return offset;
|
||||
- *flags |= FLAGS_DID_NETBSD_EMULATION;
|
||||
- if (file_printf(ms, ", emulation: %.*s",
|
||||
- (int)descsz, (const char *)&nbuf[doff]) == -1)
|
||||
- return offset;
|
||||
+ flag = FLAGS_DID_NETBSD_EMULATION;
|
||||
+ tag = "emulation:";
|
||||
break;
|
||||
default:
|
||||
if (*flags & FLAGS_DID_NETBSD_UNKNOWN)
|
||||
@@ -1154,8 +1193,15 @@ donote(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
|
||||
*flags |= FLAGS_DID_NETBSD_UNKNOWN;
|
||||
if (file_printf(ms, ", note=%u", xnh_type) == -1)
|
||||
return offset;
|
||||
- break;
|
||||
+ return offset;
|
||||
}
|
||||
+
|
||||
+ if (*flags & flag)
|
||||
+ return offset;
|
||||
+ str = CAST(const char *, &nbuf[doff]);
|
||||
+ descw = CAST(int, descsz);
|
||||
+ *flags |= flag;
|
||||
+ file_printf(ms, ", %s: %.*s", tag, descw, str);
|
||||
return offset;
|
||||
}
|
||||
|
||||
@@ -1236,7 +1282,7 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
|
||||
/* Read offset of name section to be able to read section names later */
|
||||
if (pread(fd, xsh_addr, xsh_sizeof, CAST(off_t, (off + size * strtab)))
|
||||
- < (ssize_t)xsh_sizeof) {
|
||||
+ < CAST(ssize_t, xsh_sizeof)) {
|
||||
if (file_printf(ms, ", missing section headers") == -1)
|
||||
return -1;
|
||||
return 0;
|
||||
@@ -1245,7 +1291,8 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
|
||||
for ( ; num; num--) {
|
||||
/* Read the name of this section. */
|
||||
- if ((namesize = pread(fd, name, sizeof(name) - 1, name_off + xsh_name)) == -1) {
|
||||
+ if ((namesize = pread(fd, name, sizeof(name) - 1,
|
||||
+ name_off + xsh_name)) == -1) {
|
||||
file_badread(ms);
|
||||
return -1;
|
||||
}
|
||||
@@ -1255,7 +1302,8 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
stripped = 0;
|
||||
}
|
||||
|
||||
- if (pread(fd, xsh_addr, xsh_sizeof, off) < (ssize_t)xsh_sizeof) {
|
||||
+ if (pread(fd, xsh_addr, xsh_sizeof, off) <
|
||||
+ CAST(ssize_t, xsh_sizeof)) {
|
||||
file_badread(ms);
|
||||
return -1;
|
||||
}
|
||||
@@ -1281,14 +1329,15 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
/* Things we can determine when we seek */
|
||||
switch (xsh_type) {
|
||||
case SHT_NOTE:
|
||||
- if ((uintmax_t)(xsh_size + xsh_offset) >
|
||||
- (uintmax_t)fsize) {
|
||||
+ if (CAST(uintmax_t, (xsh_size + xsh_offset)) >
|
||||
+ CAST(uintmax_t, fsize)) {
|
||||
if (file_printf(ms,
|
||||
", note offset/size %#" INTMAX_T_FORMAT
|
||||
"x+%#" INTMAX_T_FORMAT "x exceeds"
|
||||
" file size %#" INTMAX_T_FORMAT "x",
|
||||
- (uintmax_t)xsh_offset, (uintmax_t)xsh_size,
|
||||
- (uintmax_t)fsize) == -1)
|
||||
+ CAST(uintmax_t, xsh_offset),
|
||||
+ CAST(uintmax_t, xsh_size),
|
||||
+ CAST(uintmax_t, fsize)) == -1)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
@@ -1298,7 +1347,7 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
return -1;
|
||||
}
|
||||
if (pread(fd, nbuf, xsh_size, xsh_offset) <
|
||||
- (ssize_t)xsh_size) {
|
||||
+ CAST(ssize_t, xsh_size)) {
|
||||
file_badread(ms);
|
||||
free(nbuf);
|
||||
return -1;
|
||||
@@ -1306,9 +1355,9 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
|
||||
noff = 0;
|
||||
for (;;) {
|
||||
- if (noff >= (off_t)xsh_size)
|
||||
+ if (noff >= CAST(off_t, xsh_size))
|
||||
break;
|
||||
- noff = donote(ms, nbuf, (size_t)noff,
|
||||
+ noff = donote(ms, nbuf, CAST(size_t, noff),
|
||||
xsh_size, clazz, swap, 4, flags, notecount,
|
||||
fd, 0, 0, 0);
|
||||
if (noff == 0)
|
||||
@@ -1330,7 +1379,8 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
|
||||
if (nbadcap > 5)
|
||||
break;
|
||||
- if (lseek(fd, xsh_offset, SEEK_SET) == (off_t)-1) {
|
||||
+ if (lseek(fd, xsh_offset, SEEK_SET)
|
||||
+ == CAST(off_t, -1)) {
|
||||
file_badseek(ms);
|
||||
return -1;
|
||||
}
|
||||
@@ -1339,11 +1389,12 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
Elf32_Cap cap32;
|
||||
Elf64_Cap cap64;
|
||||
char cbuf[/*CONSTCOND*/
|
||||
- MAX(sizeof cap32, sizeof cap64)];
|
||||
- if ((coff += xcap_sizeof) > (off_t)xsh_size)
|
||||
+ MAX(sizeof(cap32), sizeof(cap64))];
|
||||
+ if ((coff += xcap_sizeof) >
|
||||
+ CAST(off_t, xsh_size))
|
||||
break;
|
||||
- if (read(fd, cbuf, (size_t)xcap_sizeof) !=
|
||||
- (ssize_t)xcap_sizeof) {
|
||||
+ if (read(fd, cbuf, CAST(size_t, xcap_sizeof)) !=
|
||||
+ CAST(ssize_t, xcap_sizeof)) {
|
||||
file_badread(ms);
|
||||
return -1;
|
||||
}
|
||||
@@ -1377,7 +1428,7 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
- (void)memcpy(xcap_addr, cbuf, xcap_sizeof);
|
||||
+ memcpy(xcap_addr, cbuf, xcap_sizeof);
|
||||
switch (xcap_tag) {
|
||||
case CA_SUNW_NULL:
|
||||
break;
|
||||
@@ -1392,8 +1443,9 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
", with unknown capability "
|
||||
"%#" INT64_T_FORMAT "x = %#"
|
||||
INT64_T_FORMAT "x",
|
||||
- (unsigned long long)xcap_tag,
|
||||
- (unsigned long long)xcap_val) == -1)
|
||||
+ CAST(unsigned long long, xcap_tag),
|
||||
+ CAST(unsigned long long, xcap_val))
|
||||
+ == -1)
|
||||
return -1;
|
||||
if (nbadcap++ > 2)
|
||||
coff = xsh_size;
|
||||
@@ -1446,12 +1498,12 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
if (file_printf(ms,
|
||||
" unknown hardware capability %#"
|
||||
INT64_T_FORMAT "x",
|
||||
- (unsigned long long)cap_hw1) == -1)
|
||||
+ CAST(unsigned long long, cap_hw1)) == -1)
|
||||
return -1;
|
||||
} else {
|
||||
if (file_printf(ms,
|
||||
" hardware capability %#" INT64_T_FORMAT "x",
|
||||
- (unsigned long long)cap_hw1) == -1)
|
||||
+ CAST(unsigned long long, cap_hw1)) == -1)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -1468,7 +1520,7 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
if (file_printf(ms,
|
||||
", with unknown software capability %#"
|
||||
INT64_T_FORMAT "x",
|
||||
- (unsigned long long)cap_sf1) == -1)
|
||||
+ CAST(unsigned long long, cap_sf1)) == -1)
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
@@ -1487,9 +1539,9 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
Elf32_Phdr ph32;
|
||||
Elf64_Phdr ph64;
|
||||
const char *linking_style = "statically";
|
||||
- const char *interp = "";
|
||||
unsigned char nbuf[BUFSIZ];
|
||||
char ibuf[BUFSIZ];
|
||||
+ char interp[BUFSIZ];
|
||||
ssize_t bufsize;
|
||||
size_t offset, align, len;
|
||||
|
||||
@@ -1499,8 +1551,11 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+ interp[0] = '\0';
|
||||
for ( ; num; num--) {
|
||||
- if (pread(fd, xph_addr, xph_sizeof, off) < (ssize_t)xph_sizeof) {
|
||||
+ int doread;
|
||||
+ if (pread(fd, xph_addr, xph_sizeof, off) <
|
||||
+ CAST(ssize_t, xph_sizeof)) {
|
||||
file_badread(ms);
|
||||
return -1;
|
||||
}
|
||||
@@ -1513,6 +1568,7 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
switch (xph_type) {
|
||||
case PT_DYNAMIC:
|
||||
linking_style = "dynamically";
|
||||
+ doread = 1;
|
||||
break;
|
||||
case PT_NOTE:
|
||||
if (sh_num) /* Did this through section headers */
|
||||
@@ -1521,21 +1577,16 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
align < 4) {
|
||||
if (file_printf(ms,
|
||||
", invalid note alignment %#lx",
|
||||
- (unsigned long)align) == -1)
|
||||
+ CAST(unsigned long, align)) == -1)
|
||||
return -1;
|
||||
align = 4;
|
||||
}
|
||||
/*FALLTHROUGH*/
|
||||
case PT_INTERP:
|
||||
- len = xph_filesz < sizeof(nbuf) ? xph_filesz
|
||||
- : sizeof(nbuf);
|
||||
- bufsize = pread(fd, nbuf, len, xph_offset);
|
||||
- if (bufsize == -1) {
|
||||
- file_badread(ms);
|
||||
- return -1;
|
||||
- }
|
||||
+ doread = 1;
|
||||
break;
|
||||
default:
|
||||
+ doread = 0;
|
||||
if (fsize != SIZE_UNKNOWN && xph_offset > fsize) {
|
||||
/* Maybe warn here? */
|
||||
continue;
|
||||
@@ -1543,14 +1594,39 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
break;
|
||||
}
|
||||
|
||||
+ if (doread) {
|
||||
+ len = xph_filesz < sizeof(nbuf) ? xph_filesz
|
||||
+ : sizeof(nbuf);
|
||||
+ bufsize = pread(fd, nbuf, len, xph_offset);
|
||||
+ if (bufsize == -1) {
|
||||
+ file_badread(ms);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ } else
|
||||
+ len = 0;
|
||||
+
|
||||
/* Things we can determine when we seek */
|
||||
switch (xph_type) {
|
||||
+ case PT_DYNAMIC:
|
||||
+ offset = 0;
|
||||
+ for (;;) {
|
||||
+ if (offset >= (size_t)bufsize)
|
||||
+ break;
|
||||
+ offset = dodynamic(ms, nbuf, offset,
|
||||
+ CAST(size_t, bufsize), clazz, swap);
|
||||
+ if (offset == 0)
|
||||
+ break;
|
||||
+ }
|
||||
+ if (ms->flags & MAGIC_MIME)
|
||||
+ continue;
|
||||
+ break;
|
||||
+
|
||||
case PT_INTERP:
|
||||
if (bufsize && nbuf[0]) {
|
||||
nbuf[bufsize - 1] = '\0';
|
||||
- interp = (const char *)nbuf;
|
||||
+ memcpy(interp, nbuf, bufsize);
|
||||
} else
|
||||
- interp = "*empty*";
|
||||
+ strlcpy(interp, "*empty*", sizeof(interp));
|
||||
break;
|
||||
case PT_NOTE:
|
||||
/*
|
||||
@@ -1562,7 +1638,7 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
if (offset >= (size_t)bufsize)
|
||||
break;
|
||||
offset = donote(ms, nbuf, offset,
|
||||
- (size_t)bufsize, clazz, swap, align,
|
||||
+ CAST(size_t, bufsize), clazz, swap, align,
|
||||
flags, notecount, fd, 0, 0, 0);
|
||||
if (offset == 0)
|
||||
break;
|
||||
@@ -1591,7 +1667,7 @@ file_tryelf(struct magic_set *ms, const struct buffer *b)
|
||||
size_t nbytes = b->flen;
|
||||
union {
|
||||
int32_t l;
|
||||
- char c[sizeof (int32_t)];
|
||||
+ char c[sizeof(int32_t)];
|
||||
} u;
|
||||
int clazz;
|
||||
int swap;
|
||||
@@ -1619,7 +1695,8 @@ file_tryelf(struct magic_set *ms, const struct buffer *b)
|
||||
/*
|
||||
* If we cannot seek, it must be a pipe, socket or fifo.
|
||||
*/
|
||||
- if((lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) && (errno == ESPIPE))
|
||||
+ if((lseek(fd, CAST(off_t, 0), SEEK_SET) == CAST(off_t, -1))
|
||||
+ && (errno == ESPIPE))
|
||||
fd = file_pipe2file(ms, fd, buf, nbytes);
|
||||
|
||||
if (fstat(fd, &st) == -1) {
|
||||
diff --git a/src/readelf.h b/src/readelf.h
|
||||
index ef880b9..f2f3dc3 100644
|
||||
--- a/src/readelf.h
|
||||
+++ b/src/readelf.h
|
||||
@@ -430,4 +430,107 @@ typedef struct {
|
||||
#define AV_386_SSE4_1 0x00800000
|
||||
#define AV_386_SSE4_2 0x01000000
|
||||
|
||||
+/*
|
||||
+ * Dynamic Section structure array
|
||||
+ */
|
||||
+typedef struct {
|
||||
+ Elf32_Word d_tag; /* entry tag value */
|
||||
+ union {
|
||||
+ Elf32_Addr d_ptr;
|
||||
+ Elf32_Word d_val;
|
||||
+ } d_un;
|
||||
+} Elf32_Dyn;
|
||||
+
|
||||
+typedef struct {
|
||||
+ Elf64_Xword d_tag; /* entry tag value */
|
||||
+ union {
|
||||
+ Elf64_Addr d_ptr;
|
||||
+ Elf64_Xword d_val;
|
||||
+ } d_un;
|
||||
+} Elf64_Dyn;
|
||||
+
|
||||
+/* d_tag */
|
||||
+#define DT_NULL 0 /* Marks end of dynamic array */
|
||||
+#define DT_NEEDED 1 /* Name of needed library (DT_STRTAB offset) */
|
||||
+#define DT_PLTRELSZ 2 /* Size, in bytes, of relocations in PLT */
|
||||
+#define DT_PLTGOT 3 /* Address of PLT and/or GOT */
|
||||
+#define DT_HASH 4 /* Address of symbol hash table */
|
||||
+#define DT_STRTAB 5 /* Address of string table */
|
||||
+#define DT_SYMTAB 6 /* Address of symbol table */
|
||||
+#define DT_RELA 7 /* Address of Rela relocation table */
|
||||
+#define DT_RELASZ 8 /* Size, in bytes, of DT_RELA table */
|
||||
+#define DT_RELAENT 9 /* Size, in bytes, of one DT_RELA entry */
|
||||
+#define DT_STRSZ 10 /* Size, in bytes, of DT_STRTAB table */
|
||||
+#define DT_SYMENT 11 /* Size, in bytes, of one DT_SYMTAB entry */
|
||||
+#define DT_INIT 12 /* Address of initialization function */
|
||||
+#define DT_FINI 13 /* Address of termination function */
|
||||
+#define DT_SONAME 14 /* Shared object name (DT_STRTAB offset) */
|
||||
+#define DT_RPATH 15 /* Library search path (DT_STRTAB offset) */
|
||||
+#define DT_SYMBOLIC 16 /* Start symbol search within local object */
|
||||
+#define DT_REL 17 /* Address of Rel relocation table */
|
||||
+#define DT_RELSZ 18 /* Size, in bytes, of DT_REL table */
|
||||
+#define DT_RELENT 19 /* Size, in bytes, of one DT_REL entry */
|
||||
+#define DT_PLTREL 20 /* Type of PLT relocation entries */
|
||||
+#define DT_DEBUG 21 /* Used for debugging; unspecified */
|
||||
+#define DT_TEXTREL 22 /* Relocations might modify non-writable seg */
|
||||
+#define DT_JMPREL 23 /* Address of relocations associated with PLT */
|
||||
+#define DT_BIND_NOW 24 /* Process all relocations at load-time */
|
||||
+#define DT_INIT_ARRAY 25 /* Address of initialization function array */
|
||||
+#define DT_FINI_ARRAY 26 /* Size, in bytes, of DT_INIT_ARRAY array */
|
||||
+#define DT_INIT_ARRAYSZ 27 /* Address of termination function array */
|
||||
+#define DT_FINI_ARRAYSZ 28 /* Size, in bytes, of DT_FINI_ARRAY array*/
|
||||
+#define DT_RUNPATH 29 /* overrides DT_RPATH */
|
||||
+#define DT_FLAGS 30 /* Encodes ORIGIN, SYMBOLIC, TEXTREL, BIND_NOW, STATIC_TLS */
|
||||
+#define DT_ENCODING 31 /* ??? */
|
||||
+#define DT_PREINIT_ARRAY 32 /* Address of pre-init function array */
|
||||
+#define DT_PREINIT_ARRAYSZ 33 /* Size, in bytes, of DT_PREINIT_ARRAY array */
|
||||
+#define DT_NUM 34
|
||||
+
|
||||
+#define DT_LOOS 0x60000000 /* Operating system specific range */
|
||||
+#define DT_VERSYM 0x6ffffff0 /* Symbol versions */
|
||||
+#define DT_FLAGS_1 0x6ffffffb /* ELF dynamic flags */
|
||||
+#define DT_VERDEF 0x6ffffffc /* Versions defined by file */
|
||||
+#define DT_VERDEFNUM 0x6ffffffd /* Number of versions defined by file */
|
||||
+#define DT_VERNEED 0x6ffffffe /* Versions needed by file */
|
||||
+#define DT_VERNEEDNUM 0x6fffffff /* Number of versions needed by file */
|
||||
+#define DT_HIOS 0x6fffffff
|
||||
+#define DT_LOPROC 0x70000000 /* Processor-specific range */
|
||||
+#define DT_HIPROC 0x7fffffff
|
||||
+
|
||||
+/* Flag values for DT_FLAGS */
|
||||
+#define DF_ORIGIN 0x00000001 /* uses $ORIGIN */
|
||||
+#define DF_SYMBOLIC 0x00000002 /* */
|
||||
+#define DF_TEXTREL 0x00000004 /* */
|
||||
+#define DF_BIND_NOW 0x00000008 /* */
|
||||
+#define DF_STATIC_TLS 0x00000010 /* */
|
||||
+
|
||||
+/* Flag values for DT_FLAGS_1 */
|
||||
+#define DF_1_NOW 0x00000001 /* Same as DF_BIND_NOW */
|
||||
+#define DF_1_GLOBAL 0x00000002 /* Unused */
|
||||
+#define DF_1_GROUP 0x00000004 /* Is member of group */
|
||||
+#define DF_1_NODELETE 0x00000008 /* Cannot be deleted from process */
|
||||
+#define DF_1_LOADFLTR 0x00000010 /* Immediate loading of filters */
|
||||
+#define DF_1_INITFIRST 0x00000020 /* init/fini takes priority */
|
||||
+#define DF_1_NOOPEN 0x00000040 /* Do not allow loading on dlopen() */
|
||||
+#define DF_1_ORIGIN 0x00000080 /* Require $ORIGIN processing */
|
||||
+#define DF_1_DIRECT 0x00000100 /* Enable direct bindings */
|
||||
+#define DF_1_INTERPOSE 0x00000400 /* Is an interposer */
|
||||
+#define DF_1_NODEFLIB 0x00000800 /* Ignore default library search path */
|
||||
+#define DF_1_NODUMP 0x00001000 /* Cannot be dumped with dldump(3C) */
|
||||
+#define DF_1_CONFALT 0x00002000 /* Configuration alternative */
|
||||
+#define DF_1_ENDFILTEE 0x00004000 /* Filtee ends filter's search */
|
||||
+#define DF_1_DISPRELDNE 0x00008000 /* Did displacement relocation */
|
||||
+#define DF_1_DISPRELPND 0x00010000 /* Pending displacement relocation */
|
||||
+#define DF_1_NODIRECT 0x00020000 /* Has non-direct bindings */
|
||||
+#define DF_1_IGNMULDEF 0x00040000 /* Used internally */
|
||||
+#define DF_1_NOKSYMS 0x00080000 /* Used internally */
|
||||
+#define DF_1_NOHDR 0x00100000 /* Used internally */
|
||||
+#define DF_1_EDITED 0x00200000 /* Has been modified since build */
|
||||
+#define DF_1_NORELOC 0x00400000 /* Used internally */
|
||||
+#define DF_1_SYMINTPOSE 0x00800000 /* Has individual symbol interposers */
|
||||
+#define DF_1_GLOBAUDIT 0x01000000 /* Require global auditing */
|
||||
+#define DF_1_SINGLETON 0x02000000 /* Has singleton symbols */
|
||||
+#define DF_1_STUB 0x04000000 /* Stub */
|
||||
+#define DF_1_PIE 0x08000000 /* Position Independent Executable */
|
||||
+
|
||||
#endif
|
||||
--
|
||||
2.39.1
|
||||
|
||||
68
SOURCES/file-5.33-static-PIE-binaries-2.patch
Normal file
68
SOURCES/file-5.33-static-PIE-binaries-2.patch
Normal file
@ -0,0 +1,68 @@
|
||||
From f8ba1437114e408de0f66efb272fdc1de986017a Mon Sep 17 00:00:00 2001
|
||||
From: Vincent Mihalkovic <vmihalko@redhat.com>
|
||||
Date: Mon, 6 Feb 2023 14:39:58 +0100
|
||||
Subject: [PATCH] We need to process the dynamic section so that we can set $x
|
||||
for mime.
|
||||
|
||||
9ffbd485ba4647827c4bdacf3a2de690f6765b0c
|
||||
---
|
||||
src/readelf.c | 12 +++++++++++-
|
||||
1 file changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/readelf.c b/src/readelf.c
|
||||
index cdc211f..94cdaca 100644
|
||||
--- a/src/readelf.c
|
||||
+++ b/src/readelf.c
|
||||
@@ -1273,6 +1273,8 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
uint64_t cap_sf1 = 0; /* SunOS 5.x software capabilities */
|
||||
char name[50];
|
||||
ssize_t namesize;
|
||||
+ if (ms->flags & MAGIC_MIME)
|
||||
+ return 0;
|
||||
|
||||
if (size != xsh_sizeof) {
|
||||
if (file_printf(ms, ", corrupted section header size") == -1)
|
||||
@@ -1622,6 +1624,8 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
break;
|
||||
|
||||
case PT_INTERP:
|
||||
+ if (ms->flags & MAGIC_MIME)
|
||||
+ continue;
|
||||
if (bufsize && nbuf[0]) {
|
||||
nbuf[bufsize - 1] = '\0';
|
||||
memcpy(interp, nbuf, bufsize);
|
||||
@@ -1629,6 +1633,8 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
strlcpy(interp, "*empty*", sizeof(interp));
|
||||
break;
|
||||
case PT_NOTE:
|
||||
+ if (ms->flags & MAGIC_MIME)
|
||||
+ return 0;
|
||||
/*
|
||||
* This is a PT_NOTE section; loop through all the notes
|
||||
* in the section.
|
||||
@@ -1645,9 +1651,13 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
}
|
||||
break;
|
||||
default:
|
||||
+ if (ms->flags & MAGIC_MIME)
|
||||
+ continue;
|
||||
break;
|
||||
}
|
||||
}
|
||||
+ if (ms->flags & MAGIC_MIME)
|
||||
+ return 0;
|
||||
if (file_printf(ms, ", %s linked", linking_style)
|
||||
== -1)
|
||||
return -1;
|
||||
@@ -1678,7 +1688,7 @@ file_tryelf(struct magic_set *ms, const struct buffer *b)
|
||||
Elf64_Ehdr elf64hdr;
|
||||
uint16_t type, phnum, shnum, notecount;
|
||||
|
||||
- if (ms->flags & (MAGIC_MIME|MAGIC_APPLE|MAGIC_EXTENSION))
|
||||
+ if (ms->flags & (MAGIC_APPLE|MAGIC_EXTENSION))
|
||||
return 0;
|
||||
/*
|
||||
* ELF executables have multiple section headers in arbitrary
|
||||
--
|
||||
2.39.1
|
||||
|
||||
36
SOURCES/file-5.33-static-PIE-binaries-3.patch
Normal file
36
SOURCES/file-5.33-static-PIE-binaries-3.patch
Normal file
@ -0,0 +1,36 @@
|
||||
From 27c951adbd5d7ebe95f08c18257ea031bdd59ee1 Mon Sep 17 00:00:00 2001
|
||||
From: Vincent Mihalkovic <vmihalko@redhat.com>
|
||||
Date: Mon, 6 Feb 2023 15:00:16 +0100
|
||||
Subject: [PATCH] For dynamic binaries let the df_1 pie flag determine if we
|
||||
are pie or a shared object, and ignore the mode bits.
|
||||
|
||||
upstream commit: 03084b161cf888b5286dbbcd964c31ccad4f64d9
|
||||
---
|
||||
src/readelf.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/readelf.c b/src/readelf.c
|
||||
index 94cdaca..9c75c0a 100644
|
||||
--- a/src/readelf.c
|
||||
+++ b/src/readelf.c
|
||||
@@ -1058,7 +1058,7 @@ dodynamic(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
|
||||
|
||||
switch (xdh_tag) {
|
||||
case DT_FLAGS_1:
|
||||
- if (xdh_val == DF_1_PIE)
|
||||
+ if (xdh_val & DF_1_PIE)
|
||||
ms->mode |= 0111;
|
||||
else
|
||||
ms->mode &= ~0111;
|
||||
@@ -1611,6 +1611,8 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
switch (xph_type) {
|
||||
case PT_DYNAMIC:
|
||||
offset = 0;
|
||||
+ // Let DF_1 determine if we are PIE or not.
|
||||
+ ms->mode &= ~0111;
|
||||
for (;;) {
|
||||
if (offset >= (size_t)bufsize)
|
||||
break;
|
||||
--
|
||||
2.39.1
|
||||
|
||||
125
SOURCES/file-5.33-static-PIE-binaries-4.patch
Normal file
125
SOURCES/file-5.33-static-PIE-binaries-4.patch
Normal file
@ -0,0 +1,125 @@
|
||||
From 948d0e24f33c3b411b5ec1e320acec889e6781b8 Mon Sep 17 00:00:00 2001
|
||||
From: Vincent Mihalkovic <vmihalko@redhat.com>
|
||||
Date: Mon, 6 Feb 2023 15:04:33 +0100
|
||||
Subject: [PATCH] Improve detection of static-pie binaries, and don't call them
|
||||
"dynamically linked", but call them "static-pie" linked.
|
||||
|
||||
363d7fcf703ad3ebf37b45693b2c9e43eb8b4176
|
||||
---
|
||||
src/readelf.c | 35 +++++++++++++++++++++++++----------
|
||||
1 file changed, 25 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/src/readelf.c b/src/readelf.c
|
||||
index 9c75c0a..0011659 100644
|
||||
--- a/src/readelf.c
|
||||
+++ b/src/readelf.c
|
||||
@@ -1040,7 +1040,7 @@ do_auxv_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
|
||||
|
||||
private size_t
|
||||
dodynamic(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
|
||||
- int clazz, int swap)
|
||||
+ int clazz, int swap, int *pie, size_t *need)
|
||||
{
|
||||
Elf32_Dyn dh32;
|
||||
Elf64_Dyn dh64;
|
||||
@@ -1058,11 +1058,15 @@ dodynamic(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
|
||||
|
||||
switch (xdh_tag) {
|
||||
case DT_FLAGS_1:
|
||||
+ *pie = 1;
|
||||
if (xdh_val & DF_1_PIE)
|
||||
ms->mode |= 0111;
|
||||
else
|
||||
ms->mode &= ~0111;
|
||||
break;
|
||||
+ case DT_NEEDED:
|
||||
+ (*need)++;
|
||||
+ break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -1529,9 +1533,10 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
}
|
||||
|
||||
/*
|
||||
- * Look through the program headers of an executable image, searching
|
||||
- * for a PT_INTERP section; if one is found, it's dynamically linked,
|
||||
- * otherwise it's statically linked.
|
||||
+ * Look through the program headers of an executable image, to determine
|
||||
+ * if it is statically or dynamically linked. If it has a dynamic section,
|
||||
+ * it is pie, and does not have an interpreter or needed libraries, we
|
||||
+ * call it static pie.
|
||||
*/
|
||||
private int
|
||||
dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
@@ -1540,12 +1545,13 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
{
|
||||
Elf32_Phdr ph32;
|
||||
Elf64_Phdr ph64;
|
||||
- const char *linking_style = "statically";
|
||||
+ const char *linking_style;
|
||||
unsigned char nbuf[BUFSIZ];
|
||||
char ibuf[BUFSIZ];
|
||||
char interp[BUFSIZ];
|
||||
ssize_t bufsize;
|
||||
- size_t offset, align, len;
|
||||
+ size_t offset, align, len, need = 0;
|
||||
+ int pie = 0, dynamic = 0;
|
||||
|
||||
if (size != xph_sizeof) {
|
||||
if (file_printf(ms, ", corrupted program header size") == -1)
|
||||
@@ -1569,7 +1575,6 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
/* Things we can determine before we seek */
|
||||
switch (xph_type) {
|
||||
case PT_DYNAMIC:
|
||||
- linking_style = "dynamically";
|
||||
doread = 1;
|
||||
break;
|
||||
case PT_NOTE:
|
||||
@@ -1610,6 +1615,7 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
/* Things we can determine when we seek */
|
||||
switch (xph_type) {
|
||||
case PT_DYNAMIC:
|
||||
+ dynamic = 1;
|
||||
offset = 0;
|
||||
// Let DF_1 determine if we are PIE or not.
|
||||
ms->mode &= ~0111;
|
||||
@@ -1617,7 +1623,8 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
if (offset >= (size_t)bufsize)
|
||||
break;
|
||||
offset = dodynamic(ms, nbuf, offset,
|
||||
- CAST(size_t, bufsize), clazz, swap);
|
||||
+ CAST(size_t, bufsize), clazz, swap,
|
||||
+ &pie, &need);
|
||||
if (offset == 0)
|
||||
break;
|
||||
}
|
||||
@@ -1626,6 +1633,7 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
break;
|
||||
|
||||
case PT_INTERP:
|
||||
+ need++;
|
||||
if (ms->flags & MAGIC_MIME)
|
||||
continue;
|
||||
if (bufsize && nbuf[0]) {
|
||||
@@ -1660,8 +1668,15 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
}
|
||||
if (ms->flags & MAGIC_MIME)
|
||||
return 0;
|
||||
- if (file_printf(ms, ", %s linked", linking_style)
|
||||
- == -1)
|
||||
+ if (dynamic) {
|
||||
+ if (pie && need == 0)
|
||||
+ linking_style = "static-pie";
|
||||
+ else
|
||||
+ linking_style = "dynamically";
|
||||
+ } else {
|
||||
+ linking_style = "statically";
|
||||
+ }
|
||||
+ if (file_printf(ms, ", %s linked", linking_style) == -1)
|
||||
return -1;
|
||||
if (interp[0])
|
||||
if (file_printf(ms, ", interpreter %s",
|
||||
--
|
||||
2.39.1
|
||||
|
||||
13
SOURCES/file-5.33-static-PIE-binaries-5.patch
Normal file
13
SOURCES/file-5.33-static-PIE-binaries-5.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/src/readelf.c b/src/readelf.c
|
||||
index d836e68..6d4b40b 100644
|
||||
--- a/src/readelf.c
|
||||
+++ b/src/readelf.c
|
||||
@@ -69,7 +69,7 @@ toomany(struct magic_set *ms, const char *name, uint16_t num)
|
||||
{
|
||||
if (file_printf(ms, ", too many %s (%u)", name, num) == -1)
|
||||
return -1;
|
||||
- return 0;
|
||||
+ return 1;
|
||||
}
|
||||
|
||||
private uint16_t
|
||||
49
SOURCES/file-5.33-thermocam-magic.patch
Normal file
49
SOURCES/file-5.33-thermocam-magic.patch
Normal file
@ -0,0 +1,49 @@
|
||||
diff --git a/magic/Magdir/measure b/magic/Magdir/measure
|
||||
index f23c1d6..963d85f 100644
|
||||
--- a/magic/Magdir/measure
|
||||
+++ b/magic/Magdir/measure
|
||||
@@ -8,31 +8,31 @@
|
||||
>0 beshort x scale %d-
|
||||
>2 beshort x \b%d,
|
||||
>4 lefloat x spot sensor temperature %f,
|
||||
->9 byte 0 unit celsius,
|
||||
->9 byte 1 unit fahrenheit,
|
||||
->8 byte x color scheme %d
|
||||
->10 byte 1 \b, show spot sensor
|
||||
->11 byte 1 \b, show scale bar
|
||||
->12 byte &1 \b, minimum point enabled
|
||||
->12 byte &2 \b, maximum point enabled
|
||||
+>9 ubyte 0 unit celsius,
|
||||
+>9 ubyte 1 unit fahrenheit,
|
||||
+>8 ubyte x color scheme %d
|
||||
+>10 ubyte 1 \b, show spot sensor
|
||||
+>11 ubyte 1 \b, show scale bar
|
||||
+>12 ubyte &1 \b, minimum point enabled
|
||||
+>12 ubyte &2 \b, maximum point enabled
|
||||
>13 lefloat x \b, calibration: offset %f,
|
||||
>17 lefloat x slope %f
|
||||
|
||||
0 name diy-thermocam-checker
|
||||
->9 byte <2
|
||||
->>10 byte <2
|
||||
->>>11 byte <2
|
||||
->>>>12 byte <4
|
||||
+>9 ubyte <2
|
||||
+>>10 ubyte <2
|
||||
+>>>11 ubyte <2
|
||||
+>>>>12 ubyte <4
|
||||
>>>>>17 lefloat >0.0001 DIY-Thermocam raw data
|
||||
|
||||
# V2 and Leption 3.x:
|
||||
-38408 byte <19
|
||||
+38408 ubyte <19
|
||||
>38400 use diy-thermocam-checker
|
||||
>>38400 default x (Lepton 3.x),
|
||||
>>>38400 use diy-thermocam-parser
|
||||
|
||||
# V1 or Lepton 2.x
|
||||
-9608 byte <19
|
||||
+9608 ubyte <19
|
||||
>9600 use diy-thermocam-checker
|
||||
>>9600 default x (Lepton 2.x),
|
||||
>>>9600 use diy-thermocam-parser
|
||||
14
SOURCES/file-5.33-whitespace-compare.patch
Normal file
14
SOURCES/file-5.33-whitespace-compare.patch
Normal file
@ -0,0 +1,14 @@
|
||||
diff -urp file-5.33.orig/src/softmagic.c file-5.33/src/softmagic.c
|
||||
--- file-5.33.orig/src/softmagic.c 2018-04-15 14:49:15.000000000 -0400
|
||||
+++ file-5.33/src/softmagic.c 2020-12-14 12:21:13.298285158 -0500
|
||||
@@ -1758,7 +1758,9 @@ file_strncmp(const char *s1, const char
|
||||
*/
|
||||
const unsigned char *a = (const unsigned char *)s1;
|
||||
const unsigned char *b = (const unsigned char *)s2;
|
||||
- const unsigned char *eb = b + len;
|
||||
+ uint32_t ws = flags & (STRING_COMPACT_WHITESPACE |
|
||||
+ STRING_COMPACT_OPTIONAL_WHITESPACE);
|
||||
+ const unsigned char *eb = b + (ws ? strlen(s2) : len);
|
||||
uint64_t v;
|
||||
|
||||
/*
|
||||
25
SOURCES/file-5.34-bogus-magic.patch
Normal file
25
SOURCES/file-5.34-bogus-magic.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 4fb6a59df80d4974f8230bfce36e38e6de7d574f Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Thu, 24 May 2018 18:54:40 +0000
|
||||
Subject: [PATCH] fix bogus magic
|
||||
|
||||
---
|
||||
magic/Magdir/dbpf | 8 ++----
|
||||
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/magic/Magdir/dbpf b/magic/Magdir/dbpf
|
||||
index 65cab61edf..8545720dae 100644
|
||||
--- a/magic/Magdir/dbpf
|
||||
+++ b/magic/Magdir/dbpf
|
||||
@@ -9,9 +9,7 @@
|
||||
>4 ulelong x \b, version: %u.
|
||||
>>8 ulelong x \b%u
|
||||
>>>36 ulelong x \b, files: %u
|
||||
+>>24 ledate !0 \b, created: %s
|
||||
+>>28 ledate !0 \b, modified: %s
|
||||
!:ext dbpf/package/dat/sc4
|
||||
!:mime application/x-maxis-dbpf
|
||||
-4 ulelong 1
|
||||
->8 ulelong !1
|
||||
->>24 ledate !0 \b, created: %s
|
||||
->>>28 ledate !0 \b, modified: %s
|
||||
26
SOURCES/file-5.34-ebpf-magic.patch
Normal file
26
SOURCES/file-5.34-ebpf-magic.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From b675e1cf6c5f047a1ab52b7dcea3c83ea6aac69f Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Fri, 9 Nov 2018 17:51:12 +0000
|
||||
Subject: [PATCH] Add eBPF magic from Matteo Croce
|
||||
|
||||
Upstream-commit: 4cf4e817457ce6ca32452a7c80b27e96be6441dc
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
magic/Magdir/elf | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/magic/Magdir/elf b/magic/Magdir/elf
|
||||
index 133bd1f..7c6011c 100644
|
||||
--- a/magic/Magdir/elf
|
||||
+++ b/magic/Magdir/elf
|
||||
@@ -263,6 +263,7 @@
|
||||
>18 leshort 217 iCelero CoolEngine,
|
||||
>18 leshort 218 Nanoradio Optimized RISC,
|
||||
>18 leshort 243 UCB RISC-V,
|
||||
+>18 leshort 247 eBPF,
|
||||
>18 leshort 0x1057 AVR (unofficial),
|
||||
>18 leshort 0x1059 MSP430 (unofficial),
|
||||
>18 leshort 0x1223 Adapteva Epiphany (unofficial),
|
||||
--
|
||||
2.17.2
|
||||
|
||||
56
SOURCES/file-5.35-man-apple.patch
Normal file
56
SOURCES/file-5.35-man-apple.patch
Normal file
@ -0,0 +1,56 @@
|
||||
From 5bccda402a33b4b6fee13cbc910580a85f1ab73a Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Mon, 18 Feb 2019 18:59:25 +0000
|
||||
Subject: [PATCH 1/2] Mention that the apple filetype/creator is only available for
|
||||
entries that have it (Kamil Dudka)
|
||||
|
||||
Upstream-commit: 642f269ef99930b44daa2236908da7d05a68eb08
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
doc/file.man | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/doc/file.man b/doc/file.man
|
||||
index 0968321..98061ba 100644
|
||||
--- a/doc/file.man
|
||||
+++ b/doc/file.man
|
||||
@@ -171,6 +171,9 @@ Causes the file command to output the file type and creator code as
|
||||
used by older MacOS versions.
|
||||
The code consists of eight letters,
|
||||
the first describing the file type, the latter the creator.
|
||||
+the first describing the file type, the latter the creator.
|
||||
+This option works properly only for file formats that have the
|
||||
+apple-style output defined.
|
||||
.It Fl b , Fl Fl brief
|
||||
Do not prepend filenames to output lines (brief mode).
|
||||
.It Fl C , Fl Fl compile
|
||||
--
|
||||
2.20.1
|
||||
|
||||
|
||||
From f7f3e751c0e606592b4d377a479b40f6964705ab Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Sun, 3 Mar 2019 02:32:40 +0000
|
||||
Subject: [PATCH 2/2] remove duplicate line (chefe)
|
||||
|
||||
Upstream-commit: cde5f5962ebfd057fc2e330da3b36470e6ee3724
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
doc/file.man | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/doc/file.man b/doc/file.man
|
||||
index 98061ba..05da3a7 100644
|
||||
--- a/doc/file.man
|
||||
+++ b/doc/file.man
|
||||
@@ -171,7 +171,6 @@ Causes the file command to output the file type and creator code as
|
||||
used by older MacOS versions.
|
||||
The code consists of eight letters,
|
||||
the first describing the file type, the latter the creator.
|
||||
-the first describing the file type, the latter the creator.
|
||||
This option works properly only for file formats that have the
|
||||
apple-style output defined.
|
||||
.It Fl b , Fl Fl brief
|
||||
--
|
||||
2.21.1
|
||||
|
||||
67
SOURCES/file-5.35-netpbm.patch
Normal file
67
SOURCES/file-5.35-netpbm.patch
Normal file
@ -0,0 +1,67 @@
|
||||
From b3842fb61c829b0b62e7b8a058b8a86cd83aa0e7 Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Tue, 22 Jan 2019 16:17:25 +0000
|
||||
Subject: [PATCH] Make netpbm beat DOS/MBR magic again (Kamil Dudka)
|
||||
|
||||
Upstream-commit: d2f82e2601e551badc03c4ac7a463d8e18f53e32
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
magic/Magdir/images | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/magic/Magdir/images b/magic/Magdir/images
|
||||
index fd20261..afe906c 100644
|
||||
--- a/magic/Magdir/images
|
||||
+++ b/magic/Magdir/images
|
||||
@@ -175,42 +175,42 @@
|
||||
>0 regex/4 P1[\040\t\f\r\n]
|
||||
>>0 use netpbm
|
||||
>>>0 string x \b, bitmap
|
||||
-!:strength + 45
|
||||
+!:strength + 65
|
||||
!:mime image/x-portable-bitmap
|
||||
|
||||
0 search/1 P2
|
||||
>0 regex/4 P2[\040\t\f\r\n]
|
||||
>>0 use netpbm
|
||||
>>>0 string x \b, greymap
|
||||
-!:strength + 45
|
||||
+!:strength + 65
|
||||
!:mime image/x-portable-greymap
|
||||
|
||||
0 search/1 P3
|
||||
>0 regex/4 P3[\040\t\f\r\n]
|
||||
>>0 use netpbm
|
||||
>>>0 string x \b, pixmap
|
||||
-!:strength + 45
|
||||
+!:strength + 65
|
||||
!:mime image/x-portable-pixmap
|
||||
|
||||
0 string P4
|
||||
>0 regex/4 P4[\040\t\f\r\n]
|
||||
>>0 use netpbm
|
||||
>>>0 string x \b, rawbits, bitmap
|
||||
-!:strength + 45
|
||||
+!:strength + 65
|
||||
!:mime image/x-portable-bitmap
|
||||
|
||||
0 string P5
|
||||
>0 regex/4 P5[\040\t\f\r\n]
|
||||
>>0 use netpbm
|
||||
>>>0 string x \b, rawbits, greymap
|
||||
-!:strength + 45
|
||||
+!:strength + 65
|
||||
!:mime image/x-portable-greymap
|
||||
|
||||
0 string P6
|
||||
>0 regex/4 P6[\040\t\f\r\n]
|
||||
>>0 use netpbm
|
||||
>>>0 string x \b, rawbits, pixmap
|
||||
-!:strength + 45
|
||||
+!:strength + 65
|
||||
!:mime image/x-portable-pixmap
|
||||
|
||||
0 string P7 Netpbm PAM image file
|
||||
--
|
||||
2.20.1
|
||||
|
||||
62
SOURCES/file-5.35-ppc-core.patch
Normal file
62
SOURCES/file-5.35-ppc-core.patch
Normal file
@ -0,0 +1,62 @@
|
||||
From 7a4b49897c3bc63bdf680f8cb1d7a04ac932a4ff Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Mon, 21 May 2018 16:32:34 +0000
|
||||
Subject: [PATCH 1/2] Add missing commas.
|
||||
|
||||
Upstream-commit: defcf7e39943780dd19ca002c478e52ec9ee5cbc
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
magic/Magdir/elf | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/magic/Magdir/elf b/magic/Magdir/elf
|
||||
index 7c6ac8f..d5b2d02 100644
|
||||
--- a/magic/Magdir/elf
|
||||
+++ b/magic/Magdir/elf
|
||||
@@ -50,7 +50,7 @@
|
||||
!:mime application/x-executable
|
||||
>16 leshort 3 shared object,
|
||||
!:mime application/x-sharedlib
|
||||
->16 leshort 4 core file
|
||||
+>16 leshort 4 core file,
|
||||
!:mime application/x-coredump
|
||||
# Core file detection is not reliable.
|
||||
#>>>(0x38+0xcc) string >\0 of '%s'
|
||||
--
|
||||
2.20.1
|
||||
|
||||
|
||||
From 1c7aa7b88ef9f53e19a64961867427b0c1f04857 Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Tue, 22 Jan 2019 16:28:42 +0000
|
||||
Subject: [PATCH 2/2] Add Linux PowerPC core offsets for Linux (which are off-by-4
|
||||
of the regular offsets), after the regular Linux offsets so that there is no
|
||||
confusion. The linux offsets are tried first since they are before, so on PPC
|
||||
they should contain binary data and not match. Addition requested by: Ondrej
|
||||
Dubaj/Kamil Dudka
|
||||
|
||||
Upstream-commit: 6367a7c9b476767a692f76e78e3b355dc9386e48
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
src/readelf.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/readelf.c b/src/readelf.c
|
||||
index d96a538..c101483 100644
|
||||
--- a/src/readelf.c
|
||||
+++ b/src/readelf.c
|
||||
@@ -246,7 +246,10 @@ static const size_t prpsoffsets32[] = {
|
||||
84, /* SunOS 5.x (short name) */
|
||||
|
||||
44, /* Linux (command line) */
|
||||
- 28, /* Linux 2.0.36 (short name) */
|
||||
+ 28, /* Linux (short name) */
|
||||
+
|
||||
+ 48, /* Linux PowerPC (command line) */
|
||||
+ 32, /* Linux PowerPC (short name) */
|
||||
|
||||
8, /* FreeBSD */
|
||||
};
|
||||
--
|
||||
2.20.1
|
||||
|
||||
52
SOURCES/file-5.37-CVE-2019-18218.patch
Normal file
52
SOURCES/file-5.37-CVE-2019-18218.patch
Normal file
@ -0,0 +1,52 @@
|
||||
From f73ad90e797824569008a054bea6c8215883a3a0 Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Mon, 26 Aug 2019 14:31:39 +0000
|
||||
Subject: [PATCH] Limit the number of elements in a vector (found by oss-fuzz)
|
||||
|
||||
Upstream-commit: 46a8443f76cec4b41ec736eca396984c74664f84
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
src/cdf.c | 7 +++----
|
||||
src/cdf.h | 1 +
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/cdf.c b/src/cdf.c
|
||||
index 556a3ff..8bb0a6d 100644
|
||||
--- a/src/cdf.c
|
||||
+++ b/src/cdf.c
|
||||
@@ -1013,8 +1013,9 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h,
|
||||
goto out;
|
||||
}
|
||||
nelements = CDF_GETUINT32(q, 1);
|
||||
- if (nelements == 0) {
|
||||
- DPRINTF(("CDF_VECTOR with nelements == 0\n"));
|
||||
+ if (nelements > CDF_ELEMENT_LIMIT || nelements == 0) {
|
||||
+ DPRINTF(("CDF_VECTOR with nelements == %"
|
||||
+ SIZE_T_FORMAT "u\n", nelements));
|
||||
goto out;
|
||||
}
|
||||
slen = 2;
|
||||
@@ -1056,8 +1057,6 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h,
|
||||
goto out;
|
||||
inp += nelem;
|
||||
}
|
||||
- DPRINTF(("nelements = %" SIZE_T_FORMAT "u\n",
|
||||
- nelements));
|
||||
for (j = 0; j < nelements && i < sh.sh_properties;
|
||||
j++, i++)
|
||||
{
|
||||
diff --git a/src/cdf.h b/src/cdf.h
|
||||
index 2f7e554..0505666 100644
|
||||
--- a/src/cdf.h
|
||||
+++ b/src/cdf.h
|
||||
@@ -48,6 +48,7 @@
|
||||
typedef int32_t cdf_secid_t;
|
||||
|
||||
#define CDF_LOOP_LIMIT 10000
|
||||
+#define CDF_ELEMENT_LIMIT 100000
|
||||
|
||||
#define CDF_SECID_NULL 0
|
||||
#define CDF_SECID_FREE -1
|
||||
--
|
||||
2.20.1
|
||||
|
||||
40
SOURCES/file-5.37-jffs-magic.patch
Normal file
40
SOURCES/file-5.37-jffs-magic.patch
Normal file
@ -0,0 +1,40 @@
|
||||
From 432267e707aca36bec55704fd404fa572e2c4b45 Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Fri, 15 Nov 2019 23:49:38 +0000
|
||||
Subject: [PATCH] fix JFFS2 (the old magic was just hex encoded 0x1984 which is
|
||||
wrong (Kamil Dudka)
|
||||
|
||||
Upstream-commit: 5ad78c726bb03e0fbdb6d237ef2b13e51968ffea
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
magic/Magdir/filesystems | 6 ++----
|
||||
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/magic/Magdir/filesystems b/magic/Magdir/filesystems
|
||||
index 1920e56..da5c580 100644
|
||||
--- a/magic/Magdir/filesystems
|
||||
+++ b/magic/Magdir/filesystems
|
||||
@@ -2057,10 +2057,6 @@
|
||||
>0x10040 lelong 2 yura hash
|
||||
>0x10040 lelong 3 r5 hash
|
||||
|
||||
-# JFFS - russell@coker.com.au
|
||||
-0 lelong 0x34383931 Linux Journalled Flash File system, little endian
|
||||
-0 belong 0x34383931 Linux Journalled Flash File system, big endian
|
||||
-
|
||||
# EST flat binary format (which isn't, but anyway)
|
||||
# From: Mark Brown <broonie@sirena.org.uk>
|
||||
0 string ESTFBINR EST flat binary
|
||||
@@ -2144,7 +2140,9 @@
|
||||
|
||||
# JFFS2 file system
|
||||
0 leshort 0x1984 Linux old jffs2 filesystem data little endian
|
||||
+0 beshort 0x1984 Linux old jffs2 filesystem data big endian
|
||||
0 leshort 0x1985 Linux jffs2 filesystem data little endian
|
||||
+0 beshort 0x1985 Linux jffs2 filesystem data big endian
|
||||
|
||||
# Squashfs
|
||||
0 string sqsh Squashfs filesystem, big endian,
|
||||
--
|
||||
2.20.1
|
||||
|
||||
77
SOURCES/file-5.41-python-magic-threads.patch
Normal file
77
SOURCES/file-5.41-python-magic-threads.patch
Normal file
@ -0,0 +1,77 @@
|
||||
diff --git a/python/magic.py b/python/magic.py
|
||||
index 662569e..2be58cd 100644
|
||||
--- a/python/magic.py
|
||||
+++ b/python/magic.py
|
||||
@@ -5,6 +5,7 @@ Python bindings for libmagic
|
||||
'''
|
||||
|
||||
import ctypes
|
||||
+import threading
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
@@ -241,11 +242,25 @@ def open(flags):
|
||||
|
||||
|
||||
# Objects used by `detect_from_` functions
|
||||
-mime_magic = Magic(_open(MAGIC_MIME))
|
||||
-mime_magic.load()
|
||||
-none_magic = Magic(_open(MAGIC_NONE))
|
||||
-none_magic.load()
|
||||
-
|
||||
+class MagicDetect(object):
|
||||
+ def __init__(self):
|
||||
+ self.mime_magic = Magic(_open(MAGIC_MIME))
|
||||
+ self.mime_magic.load()
|
||||
+ self.none_magic = Magic(_open(MAGIC_NONE))
|
||||
+ self.none_magic.load()
|
||||
+
|
||||
+ def __del__(self):
|
||||
+ self.mime_magic.close()
|
||||
+ self.none_magic.close()
|
||||
+
|
||||
+threadlocal = threading.local()
|
||||
+
|
||||
+def _detect_make():
|
||||
+ v = getattr(threadlocal, "magic_instance", None)
|
||||
+ if v is None:
|
||||
+ v = MagicDetect()
|
||||
+ setattr(threadlocal, "magic_instance", v)
|
||||
+ return v
|
||||
|
||||
def _create_filemagic(mime_detected, type_detected):
|
||||
mime_type, mime_encoding = mime_detected.split('; ')
|
||||
@@ -259,9 +274,9 @@ def detect_from_filename(filename):
|
||||
|
||||
Returns a `FileMagic` namedtuple.
|
||||
'''
|
||||
-
|
||||
- return _create_filemagic(mime_magic.file(filename),
|
||||
- none_magic.file(filename))
|
||||
+ x = _detect_make()
|
||||
+ return _create_filemagic(x.mime_magic.file(filename),
|
||||
+ x.none_magic.file(filename))
|
||||
|
||||
|
||||
def detect_from_fobj(fobj):
|
||||
@@ -271,8 +286,9 @@ def detect_from_fobj(fobj):
|
||||
'''
|
||||
|
||||
file_descriptor = fobj.fileno()
|
||||
- return _create_filemagic(mime_magic.descriptor(file_descriptor),
|
||||
- none_magic.descriptor(file_descriptor))
|
||||
+ x = _detect_make()
|
||||
+ return _create_filemagic(x.mime_magic.descriptor(file_descriptor),
|
||||
+ x.none_magic.descriptor(file_descriptor))
|
||||
|
||||
|
||||
def detect_from_content(byte_content):
|
||||
@@ -281,5 +297,6 @@ def detect_from_content(byte_content):
|
||||
Returns a `FileMagic` namedtuple.
|
||||
'''
|
||||
|
||||
- return _create_filemagic(mime_magic.buffer(byte_content),
|
||||
- none_magic.buffer(byte_content))
|
||||
+ x = _detect_make()
|
||||
+ return _create_filemagic(x.mime_magic.buffer(byte_content),
|
||||
+ x.none_magic.buffer(byte_content))
|
||||
@ -1,27 +1,30 @@
|
||||
From 82bed46bc78089656a28c4daca0901f7b3f409a7 Mon Sep 17 00:00:00 2001
|
||||
From: Siteshwar Vashisht <svashisht@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 15:26:38 +0100
|
||||
Subject: [PATCH] Upstream says it's up to distributions to add a way to
|
||||
support local-magic.
|
||||
From f25107f625e88726e8ae9d4963573b5a0dda8f4c Mon Sep 17 00:00:00 2001
|
||||
From: Jan Kaluza <hanzz.k@gmail.com>
|
||||
Date: Thu, 15 Dec 2011 16:15:41 +0100
|
||||
Subject: [PATCH] file-localmagic.patch
|
||||
|
||||
Upstream says it's up to distributions to add a way to support local-magic.
|
||||
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
magic/magic.local | 2 ++
|
||||
magic/magic.local | 3 +++
|
||||
src/Makefile.am | 2 +-
|
||||
src/Makefile.in | 2 +-
|
||||
src/apprentice.c | 2 +-
|
||||
4 files changed, 5 insertions(+), 3 deletions(-)
|
||||
4 files changed, 6 insertions(+), 3 deletions(-)
|
||||
create mode 100644 magic/magic.local
|
||||
|
||||
diff --git a/magic/magic.local b/magic/magic.local
|
||||
new file mode 100644
|
||||
index 0000000..33580e4
|
||||
index 0000000..283a863
|
||||
--- /dev/null
|
||||
+++ b/magic/magic.local
|
||||
@@ -0,0 +1,2 @@
|
||||
@@ -0,0 +1,3 @@
|
||||
+# Magic local data for file(1) command.
|
||||
+# Insert here your local magic data. Format is described in magic(5).
|
||||
+
|
||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||
index 96749b5..e3eaf36 100644
|
||||
index 155aec4..0f22539 100644
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -1,4 +1,4 @@
|
||||
@ -31,10 +34,10 @@ index 96749b5..e3eaf36 100644
|
||||
nodist_include_HEADERS = magic.h
|
||||
|
||||
diff --git a/src/Makefile.in b/src/Makefile.in
|
||||
index 155034b..151e4a4 100644
|
||||
index b6eeb20..78dce55 100644
|
||||
--- a/src/Makefile.in
|
||||
+++ b/src/Makefile.in
|
||||
@@ -357,7 +357,7 @@ target_alias = @target_alias@
|
||||
@@ -337,7 +337,7 @@ target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@ -44,18 +47,18 @@ index 155034b..151e4a4 100644
|
||||
nodist_include_HEADERS = magic.h
|
||||
AM_CPPFLAGS = -DMAGIC='"$(MAGIC)"'
|
||||
diff --git a/src/apprentice.c b/src/apprentice.c
|
||||
index db21787..5134682 100644
|
||||
index e395854..ecc1214 100644
|
||||
--- a/src/apprentice.c
|
||||
+++ b/src/apprentice.c
|
||||
@@ -496,7 +496,7 @@ apprentice_1(struct magic_set *ms, const char *fn, int action)
|
||||
#ifndef COMPILE_ONLY
|
||||
map = apprentice_map(ms, fn);
|
||||
@@ -454,7 +454,7 @@ apprentice_1(struct magic_set *ms, const char *fn, int action)
|
||||
if (map == (struct magic_map *)-1)
|
||||
return -1;
|
||||
if (map == NULL) {
|
||||
- if (ms->flags & MAGIC_CHECK)
|
||||
+ if (ms->flags & MAGIC_CHECK && strcmp("/etc/magic", fn) != 0)
|
||||
file_magwarn(NULL, "using regular magic file `%s'", fn);
|
||||
file_magwarn(ms, "using regular magic file `%s'", fn);
|
||||
map = apprentice_load(ms, fn, action);
|
||||
if (map == NULL)
|
||||
--
|
||||
2.39.0
|
||||
2.5.5
|
||||
|
||||
13
SOURCES/file-magic-filesystems.patch
Normal file
13
SOURCES/file-magic-filesystems.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/magic/Magdir/filesystems b/magic/Magdir/filesystems
|
||||
index eb41868f..44805a35 100644
|
||||
--- a/magic/Magdir/filesystems
|
||||
+++ b/magic/Magdir/filesystems
|
||||
@@ -1973,7 +1973,7 @@
|
||||
# to display CD-ROM (70=81-11) after MBR (113=40+72+1), partition-table (71=50+21) and before Apple Driver Map (51)
|
||||
#!:strength -11
|
||||
# to display CD-ROM (114=81+33) before MBR (113=40+72+1), partition-table (71=50+21) and Apple Driver Map (51)
|
||||
-!:strength +34
|
||||
+!:strength +35
|
||||
>0 use cdrom
|
||||
|
||||
# URL: https://en.wikipedia.org/wiki/NRG_(file_format)
|
||||
@ -5,34 +5,20 @@
|
||||
%bcond_with python3
|
||||
%endif
|
||||
|
||||
# python2 is not available on RHEL > 7
|
||||
%if 0%{?fedora} > 31 || 0%{?rhel} > 7
|
||||
# python2 is not available on RHEL > 7 and not needed on Fedora > 29
|
||||
%if 0%{?rhel} > 7 || 0%{?fedora} > 29
|
||||
%bcond_with python2
|
||||
%else
|
||||
%bcond_without python2
|
||||
%endif
|
||||
|
||||
Summary: Utility for determining file types
|
||||
Summary: A utility for determining file types
|
||||
Name: file
|
||||
Version: 5.45
|
||||
Release: 8%{?dist}
|
||||
|
||||
# Main license is BSD-2-Clause-Darwin
|
||||
# Shipped exceptions:
|
||||
# * some src/*.{c.h} - BSD-2-Clause
|
||||
# Not shipped in Fedora:
|
||||
# * src/mygetopt.h - BSD-4-Clause
|
||||
# * src/strcasestr.h - BSD-3-Clause
|
||||
# * src/strlc{at,py}.c - ISC
|
||||
# * src/vasprintf.c - BSD-2-Clause-Darwin AND BSD-3-Clause
|
||||
License: BSD-2-Clause-Darwin AND BSD-2-Clause
|
||||
|
||||
Source0: http://ftp.astron.com/pub/file/file-%{version}.tar.gz
|
||||
Source1: http://ftp.astron.com/pub/file/file-%{version}.tar.gz.asc
|
||||
|
||||
# gpg --keyserver hkp://keys.gnupg.net --recv-keys BE04995BA8F90ED0C0C176C471112AB16CB33B3A
|
||||
# gpg --output christoskey.asc --armor --export christos@zoulas.com
|
||||
Source2: christoskey.asc
|
||||
Version: 5.33
|
||||
Release: 27%{?dist}
|
||||
License: BSD
|
||||
Group: Applications/File
|
||||
Source0: ftp://ftp.astron.com/pub/file/file-%{version}.tar.gz
|
||||
|
||||
# Upstream says it's up to distributions to add a way to support local-magic.
|
||||
Patch0: file-localmagic.patch
|
||||
@ -41,25 +27,96 @@ Patch0: file-localmagic.patch
|
||||
Patch1: file-4.17-rpm-name.patch
|
||||
Patch2: file-5.04-volume_key.patch
|
||||
|
||||
# revert upstream commits (rhbz#2167964)
|
||||
# 1. https://github.com/file/file/commit/e1233247bbe4d2d66b891224336a23384a93cce1
|
||||
# 2. https://github.com/file/file/commit/f7a65dbf1739a8f8671621e41c5648d1f7e9f6ae
|
||||
Patch3: file-5.45-readelf-limit-revert.patch
|
||||
# picked from upstream
|
||||
Patch3: file-5.33-gif.patch
|
||||
Patch4: file-5.33-seccomp.patch
|
||||
|
||||
# upstream commit: https://github.com/file/file/commit/218fdf813fd5ccecbb8887a1b62509cd1c6dd3a1
|
||||
Patch4: file-5.45-time-t.patch
|
||||
# do not classify shared libraries as pie executables (#1581343)
|
||||
Patch5: file-5.33-pie-executable-revert.patch
|
||||
|
||||
# upstream: https://github.com/file/file/commit/aa86458e499d6279c2fd18e98425e6ae891d0f33
|
||||
Patch6: file-5.47-erofs-magic.patch
|
||||
# fix out-of-bounds read via a crafted ELF file (CVE-2018-10360)
|
||||
Patch6: file-5.33-CVE-2018-10360.patch
|
||||
|
||||
URL: https://www.darwinsys.com/file/
|
||||
Requires: file-libs%{?_isa} = %{version}-%{release}
|
||||
# support longer version strings for clamav database (#1539107)
|
||||
Patch7: file-5.33-clamav.patch
|
||||
|
||||
# show details about ppc swap partition (#1224668)
|
||||
Patch8: file-5.33-ppc-swap.patch
|
||||
|
||||
# fix memory leak on an error path (#1602492)
|
||||
Patch9: file-5.33-covscan.patch
|
||||
|
||||
# add magic for eBPF objects (#1648667)
|
||||
Patch10: file-5.34-ebpf-magic.patch
|
||||
|
||||
# make netpbm beat DOS/MBR magic again (#1658158)
|
||||
Patch11: file-5.35-netpbm.patch
|
||||
|
||||
# improve parsing of ppc core files (#1658171)
|
||||
Patch12: file-5.35-ppc-core.patch
|
||||
|
||||
# improve documentation of --apple in file(1) man page (#1677442)
|
||||
Patch13: file-5.35-man-apple.patch
|
||||
|
||||
# remove wrong magic for JFFS file system (#1773477)
|
||||
Patch14: file-5.37-jffs-magic.patch
|
||||
|
||||
# increase CDROM strength to beat MBR (#1696798)
|
||||
Patch15: file-magic-filesystems.patch
|
||||
|
||||
# search deeper in the zip file (#1845169)
|
||||
Patch16: file-5.33-msooxml-magic.patch
|
||||
|
||||
# when ignoring whitespace compare up to the length of the string
|
||||
Patch17: file-5.33-whitespace-compare.patch
|
||||
|
||||
# Use \040 to make space clearer
|
||||
Patch18: file-5.33-python-space.patch
|
||||
|
||||
# Pass an upper bound to file_strncmp (string is not always NULL)
|
||||
Patch19: file-5.33-bound-file_strncmp.patch
|
||||
|
||||
# improve magic for python scripts
|
||||
Patch20: file-5.33-more-python.patch
|
||||
|
||||
# improve magic for Shell, Gnome Javascript and TCL scripts
|
||||
Patch21: file-5.33-other-languages.patch
|
||||
|
||||
# fix heap-based buffer overflow in cdf_read_property_info() (CVE-2019-18218)
|
||||
Patch22: file-5.37-CVE-2019-18218.patch
|
||||
|
||||
# not yet upstream (#2095828)
|
||||
Patch23: file-5.33-fix-compression.patch
|
||||
|
||||
# upstream commit: 709dfecf25c2eb2822f7e0b8c30d6329cd2d97fb (#2061557)
|
||||
Patch24: file-5.33-floating-point-exception.patch
|
||||
|
||||
# upstream commit: e2adab1456c2bd8b005ddf8ed71540a37d05cb08 (#2071581)
|
||||
Patch25: file-5.33-static-PIE-binaries-0.patch
|
||||
# upstream commit: 9109a696f3289ba00eaa222fd432755ec4287e28 (#2071581)
|
||||
Patch26: file-5.33-static-PIE-binaries-1.patch
|
||||
# upstream commit: 9ffbd485ba4647827c4bdacf3a2de690f6765b0c (#2071581)
|
||||
Patch27: file-5.33-static-PIE-binaries-2.patch
|
||||
# upstream commit: 03084b161cf888b5286dbbcd964c31ccad4f64d9 (#2071581)
|
||||
Patch28: file-5.33-static-PIE-binaries-3.patch
|
||||
# upstream commit: 363d7fcf703ad3ebf37b45693b2c9e43eb8b4176 (#2071581)
|
||||
Patch29: file-5.33-static-PIE-binaries-4.patch
|
||||
# upstream commit: 9c3137904e59d68debb97fceaced46a691ba241a (#2071581)
|
||||
Patch30: file-5.33-static-PIE-binaries-5.patch
|
||||
|
||||
# https://github.com/file/file/commit/39e43a669d1260f0df36f0b2e78b3012ffd5f086 (#2158115)
|
||||
Patch31: file-5.33-thermocam-magic.patch
|
||||
|
||||
# Upstream commit c8deb32eab1089d1841482fb2e91833f114b6712 (#13737)
|
||||
Patch32: file-5.41-python-magic-threads.patch
|
||||
|
||||
# upstream commit: https://github.com/file/file/commit/4fb6a59df80d4974f8230bfce36e38e6de7d574f
|
||||
Patch33: file-5.34-bogus-magic.patch
|
||||
|
||||
URL: http://www.darwinsys.com/file/
|
||||
Requires: file-libs = %{version}-%{release}
|
||||
BuildRequires: zlib-devel
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: libtool
|
||||
BuildRequires: make
|
||||
BuildRequires: gnupg2
|
||||
BuildRequires: autoconf automake libtool
|
||||
|
||||
%description
|
||||
The file command is used to identify a particular file according to the
|
||||
@ -69,6 +126,8 @@ different graphics formats.
|
||||
|
||||
%package libs
|
||||
Summary: Libraries for applications using libmagic
|
||||
Group: Applications/File
|
||||
License: BSD
|
||||
|
||||
%description libs
|
||||
|
||||
@ -76,26 +135,24 @@ Libraries for applications using libmagic.
|
||||
|
||||
%package devel
|
||||
Summary: Libraries and header files for file development
|
||||
Group: Applications/File
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: file-libs%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
The file-devel package contains the header files and libmagic library
|
||||
necessary for developing programs using libmagic.
|
||||
|
||||
%package static
|
||||
Summary: Static library for file development
|
||||
Requires: file-devel = %{version}-%{release}
|
||||
|
||||
%description static
|
||||
The file-static package contains the static version of the libmagic library.
|
||||
|
||||
%if %{with python2}
|
||||
%package -n python2-magic
|
||||
Summary: Python 2 bindings for the libmagic API
|
||||
Group: Development/Libraries
|
||||
BuildRequires: python2-devel
|
||||
BuildRequires: python2-setuptools
|
||||
%if 0%{?rhel} && 0%{?rhel} <= 7
|
||||
BuildRequires: python-setuptools
|
||||
%endif
|
||||
BuildArch: noarch
|
||||
Requires: file-libs = %{version}-%{release}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
%{?python_provide:%python_provide python2-magic}
|
||||
|
||||
%description -n python2-magic
|
||||
@ -105,24 +162,20 @@ file(1) command.
|
||||
%endif
|
||||
|
||||
%if %{with python3}
|
||||
%package -n python3-file-magic
|
||||
%package -n python3-magic
|
||||
Summary: Python 3 bindings for the libmagic API
|
||||
Group: Development/Libraries
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-setuptools
|
||||
BuildArch: noarch
|
||||
Requires: file-libs = %{version}-%{release}
|
||||
Provides: python3-magic = %{version}-%{release}
|
||||
Obsoletes: python3-magic < %{version}-%{release}
|
||||
Conflicts: python3-magic < %{version}-%{release}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description -n python3-file-magic
|
||||
%description -n python3-magic
|
||||
This package contains the Python 3 bindings to allow access to the
|
||||
libmagic API. The libmagic library is also used by the familiar
|
||||
file(1) command.
|
||||
%endif
|
||||
|
||||
%prep
|
||||
%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
|
||||
%autosetup -p1
|
||||
|
||||
iconv -f iso-8859-1 -t utf-8 < doc/libmagic.man > doc/libmagic.man_
|
||||
@ -139,12 +192,12 @@ cp -a python %{py3dir}
|
||||
autoreconf -fi
|
||||
|
||||
CFLAGS="%{optflags} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" \
|
||||
%configure --enable-fsect-man5 --disable-rpath --enable-static
|
||||
%configure --enable-fsect-man5 --disable-rpath
|
||||
# remove hardcoded library paths from local libtool
|
||||
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
|
||||
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
|
||||
export LD_LIBRARY_PATH=$PWD/src/.libs
|
||||
%make_build
|
||||
export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/src/.libs
|
||||
make %{?_smp_mflags} V=1
|
||||
%if %{with python2}
|
||||
cd python
|
||||
CFLAGS="%{optflags}" %{__python2} setup.py build
|
||||
@ -161,7 +214,7 @@ mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man5
|
||||
mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/misc
|
||||
mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/file
|
||||
|
||||
%make_install
|
||||
make DESTDIR=${RPM_BUILD_ROOT} install
|
||||
rm -f ${RPM_BUILD_ROOT}%{_libdir}/*.la
|
||||
|
||||
# local magic in /etc/magic
|
||||
@ -184,20 +237,18 @@ cd %{py3dir}
|
||||
|
||||
%ldconfig_scriptlets libs
|
||||
|
||||
%check
|
||||
export LD_LIBRARY_PATH=$PWD/src/.libs
|
||||
make -C tests check
|
||||
|
||||
%files
|
||||
%{!?_licensedir:%global license %%doc}
|
||||
%license COPYING
|
||||
%doc ChangeLog
|
||||
%doc ChangeLog README
|
||||
%{_bindir}/*
|
||||
%{_mandir}/man1/*
|
||||
%config(noreplace) %{_sysconfdir}/magic
|
||||
|
||||
%files libs
|
||||
%{!?_licensedir:%global license %%doc}
|
||||
%license COPYING
|
||||
%doc ChangeLog
|
||||
%doc ChangeLog README
|
||||
%{_libdir}/*so.*
|
||||
%{_datadir}/magic*
|
||||
%{_mandir}/man5/*
|
||||
@ -208,15 +259,12 @@ make -C tests check
|
||||
%{_libdir}/*.so
|
||||
%{_includedir}/magic.h
|
||||
%{_mandir}/man3/*
|
||||
%{_libdir}/pkgconfig/libmagic.pc
|
||||
|
||||
%files static
|
||||
%{_libdir}/libmagic.a
|
||||
|
||||
%if %{with python2}
|
||||
%files -n python2-magic
|
||||
%{!?_licensedir:%global license %%doc}
|
||||
%license COPYING
|
||||
%doc python/README.md python/example.py
|
||||
%doc python/README python/example.py
|
||||
%{python2_sitelib}/magic.py
|
||||
%{python2_sitelib}/magic.pyc
|
||||
%{python2_sitelib}/magic.pyo
|
||||
@ -226,238 +274,82 @@ make -C tests check
|
||||
%endif
|
||||
|
||||
%if %{with python3}
|
||||
%files -n python3-file-magic
|
||||
%files -n python3-magic
|
||||
%{!?_licensedir:%global license %%doc}
|
||||
%license COPYING
|
||||
%doc python/README.md python/example.py
|
||||
%doc python/README python/example.py
|
||||
%{python3_sitelib}/magic.py
|
||||
%{python3_sitelib}/*egg-info
|
||||
%{python3_sitelib}/__pycache__/*
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Wed Mar 26 2025 Vincent Mihalkovic <vmihalko@redhat.com> - 5.45-8
|
||||
- magic: Use the bcachefs-uuid for erofs
|
||||
Resolves: RHEL-76142
|
||||
* Sat Mar 29 2025 Vincent Mihalkovic <vmihalko@redhat.com> - 5.33-27
|
||||
- Fix incorrect magic pattern for databases
|
||||
Resolves: RHEL-84532
|
||||
|
||||
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 5.45-7
|
||||
- Bump release for October 2024 mass rebuild:
|
||||
Resolves: RHEL-64018
|
||||
* Thu Oct 12 2023 Vincent Mihalkovic <vmihalko@redhat.com> - 5.33-26
|
||||
- Fix segfault in python3-file-magic concurrent method calls (#13737)
|
||||
|
||||
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 5.45-6
|
||||
- Bump release for June 2024 mass rebuild
|
||||
* Thu Apr 20 2023 Vincent Mihalkovic <vmihalko@redhat.com> - 5.33-25
|
||||
- Improve thermocam magic (rhbz#2158115)
|
||||
|
||||
* Wed Feb 14 2024 Vincent Mihalkovic <vmihalko@redhat.com> - 5.45-5
|
||||
- fix license of the file-libs subpackage
|
||||
* Wed Feb 22 2023 Vincent Mihalkovic <vmihalko@redhat.com> - 5.33-24
|
||||
- fix detection of static-pie binaries (#2071581)
|
||||
|
||||
* Tue Feb 06 2024 Lukáš Zaoral <lzaoral@redhat.com> - 5.45-4
|
||||
- migrate to SPDX license format
|
||||
* Wed Feb 01 2023 Vincent Mihalkovic <vmihalko@redhat.com> - 5.33-23
|
||||
- fix detection of static-pie binaries (#2071581)
|
||||
|
||||
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.45-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
* Tue Jan 31 2023 Vincent Mihalkovic <vmihalko@redhat.com> - 5.33-22
|
||||
- fix issue with libmagic and floating point exceptions (#2061557)
|
||||
|
||||
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.45-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
* Wed Aug 17 2022 Vincent Mihalkovic <vmihalko@redhat.com> - 5.33-21
|
||||
- fix recognition (src/compress.c) of compressed empty files (#2095828)
|
||||
|
||||
* Mon Jul 31 2023 Vincent Mihalkovic <vmihalko@redhat.com> - 5.45-1
|
||||
- new upstream release 5.45
|
||||
* Tue May 04 2021 Vincent Mihalkovic <vmihalko@redhat.com> - 5.33-20
|
||||
- rebuild (#1954434)
|
||||
|
||||
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 5.44-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Tue Jun 13 2023 Python Maint <python-maint@redhat.com> - 5.44-4
|
||||
- Rebuilt for Python 3.12
|
||||
|
||||
* Wed Mar 01 2023 Vincent Mihalkovic <vmihalko@redhat.com> - 5.44-3
|
||||
- Remove the size limit check of the elf note section (rhbz#2167964)
|
||||
|
||||
* Thu Feb 09 2023 Vincent Mihalkovic <vmihalko@redhat.com> - 5.44-2
|
||||
- Fix the size limit of the elf note section (rhbz#2167964)
|
||||
Test written by lzaoral, thanks!
|
||||
|
||||
* Fri Jan 20 2023 Vincent Mihalkovic <vmihalko@redhat.com> - 5.44-1
|
||||
- update to new version 5.44
|
||||
|
||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 5.42-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Tue Jul 26 2022 Florian Weimer <fweimer@redhat.com> - 5.42-4
|
||||
- Fix use-after-free with large file -f list (#2110622)
|
||||
|
||||
* Mon Jul 25 2022 Vincent Mihalkovic <vmihalko@redhat.com> - 5.42-3
|
||||
- bump release to 5.42-3
|
||||
|
||||
* Thu Jul 21 2022 Vincent Mihalkovic <vmihalko@redhat.com> - 5.42-1
|
||||
- update to new version 5.42
|
||||
|
||||
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 5.41-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Mon Jun 13 2022 Python Maint <python-maint@redhat.com> - 5.41-6
|
||||
- Rebuilt for Python 3.11
|
||||
|
||||
* Wed Mar 02 2022 Vincent Mihalkovic <vmihalko@redhat.com> - 5.41-5
|
||||
- gpgverify source tarball
|
||||
|
||||
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 5.41-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Tue Dec 14 2021 Vincent Mihalkovic <vmihalko@redhat.com> - 5.41-3
|
||||
- change the identification for JSON files (#2020715)
|
||||
|
||||
* Wed Dec 08 2021 Vincent Mihalkovic <vmihalko@redhat.com> - 5.41-2
|
||||
- fix the JavaScript detection (#2029975)
|
||||
|
||||
* Tue Oct 19 2021 Vincent Mihalkovic <vmihalko@redhat.com> - 5.41-1
|
||||
- update to new version 5.41
|
||||
|
||||
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 5.40-9
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Tue Jun 08 2021 Vincent Mihalkovic <vmihalko@redhat.com> - 5.40-8
|
||||
- do not classify python bytecode files as text (#1963895)
|
||||
|
||||
* Thu Jun 03 2021 Python Maint <python-maint@redhat.com> - 5.40-7
|
||||
- Rebuilt for Python 3.10
|
||||
|
||||
* Wed Apr 28 2021 Vincent Mihalkovic <vmihalko@redhat.com> - 5.40-6
|
||||
- enable the upstream test suite
|
||||
|
||||
* Mon Apr 26 2021 Vincent Mihalkovic <vmihalko@redhat.com> - 5.40-5
|
||||
- fix printing ext4 filesystem UUIDs (#1945122)
|
||||
|
||||
* Mon Apr 19 2021 Stephen Gallagher <sgallagh@redhat.com> - 5.40-4
|
||||
- Restore the xz commit with the upstream fix (#1947317)
|
||||
|
||||
* Mon Apr 12 2021 Vincent Mihalkovic <vmihalko@redhat.com> - 5.40-3
|
||||
- revert the https://github.com/file/file/commit/3ebd747d commit (#1947317)
|
||||
|
||||
* Thu Apr 08 2021 Vincent Mihalkovic <vmihalko@redhat.com> - 5.40-2
|
||||
- make python{2,3}-magic depend on file-libs (#1947453)
|
||||
|
||||
* Wed Mar 31 2021 Vincent Mihalkovic <vmihalko@redhat.com> - 5.40-1
|
||||
- update to new version 5.40
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 5.39-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Wed Dec 16 2020 Vincent Mihalkovic <vmihalko@redhat.com> - 5.39-4
|
||||
- Fix close_on_exec multithreaded decompression issue (#1906751)
|
||||
|
||||
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 5.39-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Wed Jun 24 2020 Vincent Mihalkovic <vmihalko@redhat.com> - 5.39-2
|
||||
- BuildRequires: python3-setuptools
|
||||
|
||||
* Tue Jun 16 2020 Vincent Mihalkovic <vmihalko@redhat.com> - 5.39-1
|
||||
- update to new version 5.39
|
||||
|
||||
* Wed May 27 2020 Miro Hrončok <mhroncok@redhat.com> - 5.38-6
|
||||
- Rebuilt for Python 3.9
|
||||
|
||||
* Tue May 26 2020 Vincent Mihalkovič <vmihalko@redhat.com> - 5.38-5
|
||||
- increase CDROM strength to beat MBR (#1696798)
|
||||
|
||||
* Sat May 23 2020 Miro Hrončok <mhroncok@redhat.com> - 5.38-4
|
||||
- Rebuilt for Python 3.9
|
||||
|
||||
* Wed Mar 11 2020 Vincent Mihalkovič <vmihalko@redhat.com> - 5.38-3
|
||||
- use python3-file-magic instead of python3-magic (#1793689)
|
||||
|
||||
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 5.38-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Tue Dec 17 2019 Kamil Dudka <kdudka@redhat.com> - 5.38-1
|
||||
- update to new version 5.38
|
||||
|
||||
* Mon Nov 18 2019 Kamil Dudka <kdudka@redhat.com> - 5.37-9
|
||||
- remove wrong magic for JFFS file system (#1771242)
|
||||
|
||||
* Fri Oct 25 2019 Kamil Dudka <kdudka@redhat.com> - 5.37-8
|
||||
* Wed Apr 14 2021 Vincent Mihalkovic <vmihalko@redhat.com> - 5.33-18
|
||||
- fix heap-based buffer overflow in cdf_read_property_info() (CVE-2019-18218)
|
||||
|
||||
* Mon Oct 14 2019 Kamil Dudka <kdudka@redhat.com> - 5.37-7
|
||||
- remove the python2-magic subpackage on f32+ (#1761223)
|
||||
* Thu Jan 21 2021 Vincent Mihalkovic <vmihalko@redhat.com> - 5.33-17
|
||||
- improve magic for script recognition and other changes (#1903531)
|
||||
|
||||
* Fri Oct 04 2019 Kamil Dudka <kdudka@redhat.com> - 5.37-6
|
||||
- always install python2-setuptools if python2 is enabled
|
||||
* Mon Jun 22 2020 Vincent Mihalkovic <vmihalko@redhat.com> - 5.33-16
|
||||
- magic/Magdir/msooxml: Search deeper in the zip file (#1845169)
|
||||
|
||||
* Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 5.37-5
|
||||
- Rebuilt for Python 3.8.0rc1 (#1748018)
|
||||
* Fri May 22 2020 Kamil Dudka <kdudka@redhat.com> - 5.33-15
|
||||
- remove duplicate line in file(1) man page (#1677442)
|
||||
|
||||
* Fri Aug 16 2019 Miro Hrončok <mhroncok@redhat.com> - 5.37-4
|
||||
- Rebuilt for Python 3.8
|
||||
* Thu May 21 2020 Vincent Mihalkovič <vmihalko@redhat.com> - 5.33-14
|
||||
- increase magic/Magdir/filesystems CDROM strength to beat MBR (#1696798)
|
||||
|
||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 5.37-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
* Mon Nov 18 2019 Kamil Dudka <kdudka@redhat.com> - 5.33-13
|
||||
- remove wrong magic for JFFS file system (#1773477)
|
||||
|
||||
* Tue Jun 11 2019 Kamil Dudka <kdudka@redhat.com> - 5.37-2
|
||||
- fix double free on read error (#1685217)
|
||||
* Tue Oct 15 2019 Kamil Dudka <kdudka@redhat.com> - 5.33-12
|
||||
- restore missing comma in the output for core files (#1658171)
|
||||
|
||||
* Fri May 17 2019 Kamil Dudka <kdudka@redhat.com> - 5.37-1
|
||||
- update to new version 5.37
|
||||
* Tue Oct 15 2019 Kamil Dudka <kdudka@redhat.com> - 5.33-11
|
||||
- improve documentation of --apple in file(1) man page (#1677442)
|
||||
- improve parsing of ppc core files (#1658171)
|
||||
|
||||
* Fri Mar 01 2019 Kamil Dudka <kdudka@redhat.com> - 5.36-2
|
||||
- improve support for Apple formats (#1679455)
|
||||
* Mon Oct 14 2019 Kamil Dudka <kdudka@redhat.com> - 5.33-10
|
||||
- make netpbm beat DOS/MBR magic again (#1658158)
|
||||
|
||||
* Thu Feb 21 2019 Siteshwar Vashisht <svashisht@redhat.com> - 5.36-1
|
||||
- update to new version 5.36, which fixes the following vulnerabilities:
|
||||
CVE-2019-8907 - remote denial of service in do_core_note in readelf.c
|
||||
CVE-2019-8905 - stack-based buffer over-read in do_core_note in readelf.c
|
||||
CVE-2019-8904 - stack-based buffer over-read in do_bid_note in readelf.c
|
||||
CVE-2019-8906 - out-of-bounds read in do_core_note in readelf.c
|
||||
* Wed Jul 03 2019 Kamil Dudka <kdudka@redhat.com> - 5.33-9
|
||||
- add magic for eBPF objects (#1652993)
|
||||
|
||||
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 5.35-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
* Mon Nov 05 2018 Kamil Dudka <kdudka@redhat.com> - 5.33-8
|
||||
- fix memory leak on an error path (#1602492)
|
||||
|
||||
* Thu Jan 24 2019 Ondrej Dubaj <odubaj@redhat.com> - 5.35-4
|
||||
- Added Linux PowerPC core offsets for Linux + fixed bug #1161911
|
||||
|
||||
* Thu Jan 24 2019 Ondrej Dubaj <odubaj@redhat.com> - 5.35-3
|
||||
- Fixed bug missidentifying netpbm files (#856092)
|
||||
|
||||
* Tue Dec 04 2018 Ondrej Dubaj <odubaj@redhat.com> - 5.35-2
|
||||
- Fixed bug misleading qcow2 v2 and v3 files (#1654349)
|
||||
|
||||
* Tue Dec 04 2018 Kamil Dudka <kdudka@redhat.com> - 5.35-1
|
||||
- update to new version 5.35
|
||||
|
||||
* Wed Nov 21 2018 Ondrej Dubaj <odubaj@redhat.com> - 5.34-6
|
||||
- Fixed missidentifying locale files bug (#1527398)
|
||||
|
||||
* Wed Nov 14 2018 Kamil Dudka <kdudka@redhat.com> - 5.34-5
|
||||
- reintroduce the python2-magic subpackage needed by python2-bugzilla (#1649547)
|
||||
|
||||
* Mon Nov 12 2018 Kamil Dudka <kdudka@redhat.com> - 5.34-4
|
||||
- add magic for eBPF objects (#1648667)
|
||||
|
||||
* Tue Jul 31 2018 Florian Weimer <fweimer@redhat.com> - 5.34-3
|
||||
- Rebuild with fixed binutils
|
||||
|
||||
* Fri Jul 27 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 5.34-2
|
||||
- Rebuild for new binutils
|
||||
|
||||
* Wed Jul 25 2018 Kamil Dudka <kdudka@redhat.com> - 5.34-1
|
||||
- update to new version 5.34
|
||||
|
||||
* Tue Jul 17 2018 Kamil Dudka <kdudka@redhat.com> - 5.33-10
|
||||
* Tue Jul 17 2018 Kamil Dudka <kdudka@redhat.com> - 5.33-7
|
||||
- show details about ppc swap partition (#1224668)
|
||||
- support longer version strings for clamav database (#1539107)
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 5.33-9
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Sun Jun 17 2018 Miro Hrončok <mhroncok@redhat.com> - 5.33-8
|
||||
- Rebuilt for Python 3.7
|
||||
|
||||
* Wed Jun 13 2018 Kamil Dudka <kdudka@redhat.com> - 5.33-7
|
||||
* Wed Jun 13 2018 Kamil Dudka <kdudka@redhat.com> - 5.33-6
|
||||
- fix out-of-bounds read via a crafted ELF file (CVE-2018-10360)
|
||||
|
||||
* Mon May 28 2018 Kamil Dudka <kdudka@redhat.com> - 5.33-6
|
||||
- make file-devel depend on file-libs, instead of file
|
||||
- reintroduce file-static subpackage (#1575661)
|
||||
- drop obsolete Group tag
|
||||
|
||||
* Thu May 24 2018 Kamil Dudka <kdudka@redhat.com> - 5.33-5
|
||||
- do not classify shared libraries as pie executables in MIME output (#1581343)
|
||||
|
||||
11
STAGE2-file
11
STAGE2-file
@ -1,11 +0,0 @@
|
||||
#requires autoconf
|
||||
|
||||
cd $SRC/file-*
|
||||
|
||||
# awful hack to prevent running aclocal ... FIXME
|
||||
#(cd m4 && [ -f libtool.m4.orig ] && rm -f libtool.m4 && mv libtool.m4.orig libtool.m4) || echo ""
|
||||
|
||||
./configure $TCONFIGARGS
|
||||
|
||||
make $J
|
||||
make install
|
||||
@ -1,79 +0,0 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v2
|
||||
|
||||
mQGiBEg60Q8RBAC89+Oyi+iU1dMftAqXKh9Ml2PDCRk+Q6gwSY2BwmnKrPYvLSx9/YApjDp4
|
||||
BzhjaMCiDtDkbVDO3JuLQqUsCUWRJr9UxgfkQPMx3obkgoyCCvUcG5eK9CHeztjz5UK3jOzD
|
||||
939UtupUXs+5z4dK1oAFFEL3sV6m5O4cuHyeWpjLCwCg9LYwmG2wIB65/2619W2kRMShDwkD
|
||||
/1KweB5mmXdQCDpzSg02Q4kGOzWmN2Dpv5kvKd9Lj/qxkj5PFOJ56Rmm04K0lPE6AnDgvEeu
|
||||
SqO8pkA8OY5IQNIjlgg3tshoMBRdsj9JLKv67smQXy01eQmadJWoiIZFuSLX7nrRLm3x3i1K
|
||||
4/tcKorXoD5QBgOWaYFzkOcQ5jrwA/9tn0MEkkVqez88xGhOjq6jooRWrP2lhNWb+Q7ayEvW
|
||||
9Wm9CYS0dXxlCCJfqBOc+cZo8iVVbqiOzwAQ7uAAUv8azuaeRWpOD7MSjkXjYtkPwZevEd6x
|
||||
FKODaB2BDO4WMlxO9mp3Q/gPfrM41v9n33tYsAzQMW7c9W5mX/XH2Cv/57QyQ2hyaXN0b3Mg
|
||||
Wm91bGFzIChOZXRCU0Qga2V5KSA8Y2hyaXN0b3NAbmV0YnNkLm9yZz6IXgQQEQgABgUCWcg8
|
||||
UAAKCRCWb7A7gPrCzP43AP9pxzM85lwZxHRG8vPw16wWUYGcGW44g/u1zqavRUksvgD/fX1y
|
||||
6+cj5kNEqp5bHgCvOJiSYADIUQaPTYbwMvnQ1IuIZAQTEQIAJAIbAwYLCQgHAwIDFQIDAxYC
|
||||
AQIeAQIXgAUCV7RsLgUJIkWeFwAKCRBxESqxbLM7Oi/LAKC1PdNLcoP06p6nsGh4ApH0gkSl
|
||||
fgCg7k7lwLPdN0djOMUPMFnqN+TYAoaIZAQTEQIAJAUCSDrTKgIbAwUJDwmcAAYLCQgHAwID
|
||||
FQIDAxYCAQIeAQIXgAAKCRBxESqxbLM7OqXeAJ9tkhVpTsdkix5oWzsBCbU4vHO2CACfbd8k
|
||||
PWR68VgvDK5RPQchyghfIZGJARwEEAECAAYFAlnOXIQACgkQWrHF/qWWAmTEhggAmTr9PxSU
|
||||
wQ8dAvno6I30mDY+r4V2FaD+WvhITDV/CYfU4ImDCfknDC1x4f44YAgN94YQfnTmAixWLLk9
|
||||
NhvgKWHg5Sq2p7S3hLe3hQHUu+4mHq2t+oBtiwnb+GPUAz3ko1hjQ2fN3nZdwKNA3P37NJuj
|
||||
EiXOR1UsxO8TaTuf/mB+9vdrUpHsgRaZwYIJ7oszkRkr2V82QsMwgcIdnCPEVY7q+foi2DUF
|
||||
UW3eujRLpW9M/NUXrA8f2wQZVaLNy+Zpai57uXW7bVRc82+uRDVwckhKq+YRpfRiD/JCWzKP
|
||||
AJJfabUkKiA6NUe51aQJm64BUKh7p8ZR4qjCr/Roofsh9okCHAQQAQIABgUCWduxXQAKCRBm
|
||||
Bw6ljCki37ulD/4iZ9hjimgichG5F5Ht2CfPx3Qm16QYjnuB2l7FZNPYlcThdNgjJjc4Wro3
|
||||
jrcfj6KMTGXnkRuY7794co6z/U/x9sVz9wQYr0ugrJsVQeHRWbJGl2vFhOOtgj9hfJQM44nz
|
||||
3ZZR4VDh/KU4njBhPR1Mzxoop1WBnWcE9RpTIyMlaB6RK9I8JGOpvNYzQaODnsG7z144G/3W
|
||||
gIWZnjVVozv/szvtabd+L1N3hMPI2jNkmKWSGuZWdIIcPBEp2e9AYmb9mVhp8UanrMWVTUi0
|
||||
q7Cc0Jw4tkTwXYaEeRcbbB87p+IV0an7o+m9e2hrdZJan276tDOFe+HgcZ4NiEM8LTcOBIHn
|
||||
VWaRLwQD4AAB8zmMHiVTN3oUdQsYlZmHhBYv8Bkfzwi8JdxMq7V2zGntQnROl9Ust3qL8g28
|
||||
xI/dzt396qupywaF/2bUKyZx/079Y3eEluPQlU+iof+hJ2roetJNwMzs/hTDLQgI4T8ZhsMO
|
||||
MewZUVI59YrqjETR1U6+L9txmULgL16jBpLqvFBGhUOIDqjI5uxapEjCGy3inocjUeejy5iN
|
||||
PehQwt2TKC2Exsyd02kJrPErYVcMLYbO90d2ykBItoSXsDcuOTgfyxpvxTUih4tHVf5B69Ht
|
||||
HAPPYqSEfwlVazLnoe/z5KU2h415vcwuRuI1WU0ghdGFCMmH1rQ0Q2hyaXN0b3MgWm91bGFz
|
||||
IChwZXJzb25hbCBrZXkpIDxjaHJpc3Rvc0B6b3VsYXMuY29tPoheBBARCAAGBQJZyDxEAAoJ
|
||||
EJZvsDuA+sLMa3oA/Rub7s6Vp61CJ4kDTyfAJg0vL2Y6dqb0l1qZfg7kHWDTAQDK85IGzegN
|
||||
dAftzh5ZBgOOByQ8C8nprbxQWNTKXwWBH4hkBBMRAgAkAhsDBgsJCAcDAgMVAgMDFgIBAh4B
|
||||
AheABQJXtGwxBQkiRZ4XAAoJEHERKrFsszs6XGUAn2mngFtwV1va2adBDUrx4ZpXHQNBAJ9w
|
||||
EZ8bIqAmyTrAE8r0iOXe1bzWrIhkBBMRAgAkBQJIOtEPAhsDBQkPCZwABgsJCAcDAgMVAgMD
|
||||
FgIBAh4BAheAAAoJEHERKrFsszs63YcAnRjURIBsnyKeY+f6jO8pVYx499LHAJwP4h+X2i+r
|
||||
drCNiSYYVCYbkNjysokBHAQQAQIABgUCWc5chAAKCRBascX+pZYCZA6bCACAB7DFdL0DfXUU
|
||||
+BTcJQXvlD9fKBoGmonUACPX/wq7phmnvJL0Btl1KJlcLuiu94PgLPXH4nWwpGnWG2Ogigqf
|
||||
HxM4Jx6skqkBQI6npacTU1nSaIBW4hKZpo/6QvgjmO1wsSPemIvZ/8+ijfS5AHPh0gew3BFj
|
||||
ESPvwWxxode3zDKD5n6g1vU4Id9i0OqjUUkUnCBy8pz6b/n3VuyYXM+OnMgZw+tXfYUJkf3v
|
||||
15gWhXlmpeLCPdmSZ8NRy80lrY45EHra2lPx3RgX88AF3cgwLrKfjLRc1yuSZ1mipT+pI1Fs
|
||||
uUe14XfXHiLM2ESp2HLDLmCY8lwYelmWPO76skwEiQIcBBABAgAGBQJZ27FdAAoJEGYHDqWM
|
||||
KSLft9UP/3ZxzMkr2m8/itBLOBJbMlvCb5gfZLHrQV/GF9OIDDSdu0+4cbbVqeXyg4tEQHHi
|
||||
8Gr9WZI3CgqWbJN66NkKnaPqZ4RE7a98h9AvRxWsGhBI+I8r8LTlsQQrhjUyEinsr7oqNP9M
|
||||
SO7vicg6df5SuWmQxTrap8A1noX6O0djzJ9Ea721hCHDxGQ9nxCAPOIvS7lI06soNLuuTdp+
|
||||
E+r1d3+saHGU6YK8GsnqFSTdxb9WBUJU8BQpcI9kL3iIGA8Azw6L5CFra9InCCQIjzHIbL/r
|
||||
WLIJKxJicHJib009atUeLDCwmdaLHoqOkqOJIYrnbbEkPQunY6A68KkNx05N5p46eRwKxKA0
|
||||
TJQAMyzdkCYKaiQe+pETwsyO89P9RK84P5wCG4jqSe29JW7VeuBOQDJ3khBN3whDu9s5gVlh
|
||||
UGjIeLo85g7IIKTtv5fbopAUCjbVwccqws54PmiSqTy5OlOCbbYGDtoermnXME+sFcNRT8MI
|
||||
ktWShC6GrF1BhVrS4ex9e6jsQxKQRMlab2bBeJ6rUXT/i8cnpJERViPspDvVgL7Oer+K2gep
|
||||
uNa2DeCaNardaAYo2IYu985pqRZYJVTCydmX+Wlhfp12tzToW1/9QsLTvKUhuI0WB/cC839t
|
||||
lJRXapfKjwjj91VEX7Y26vHWli5noHMSNIRlIjT5RqouuQQNBEg60jMQEADIcUV/L4XmXXqj
|
||||
GvglW2ZAPn/FIm+N4GM/vTjxUXAc2ciiIsTDuO+1+e4sB9eN05rcvtTyt28W6N6hL8HfQIFq
|
||||
5WEsd86vd+cSiBlisq1BglNgFiAfRy/guoLHiYnBlSdS6/Gab86zR4m6Bg1JZOcV0c9Irffv
|
||||
5XLlT/LX45V46ju3PQSJYGboKdEaX4jUWcSQgUQ4+HyyP2DsWPyfrJj4sFA0T78b1ywsyKK2
|
||||
OOv7KUQk/Hwq2C68aG6YlvvVKywucoSX2uk0ZnWjCCwgOtXxyHIysqAxcz9IPRbtJ3PjjScM
|
||||
kv9NMrb5SDswwZy1vfL8s1sa8w7uZgXlpOaFb/yYMuzvwKRwJNxptVW0TTcZ8ADemRiHgDzJ
|
||||
0MbXYcmSH8CXla746Bg7oXaCMPvfivOnIsj/6d3YZPT1enwBprgL3VqlWPA4fjWyMh6+BoHu
|
||||
ak7Q4k2h2sSXo29tR6KXYbc+K+qUB+QrjGDkOL6JqN5nBLiu3H95B7ZEm8wDoYitDpt7ot9S
|
||||
5ja+dcNyUu+XXUGXvc8SvzEmsDKMqxZSxvCyIfPhaFxVylLK02fhfXqpBImvZ6UmHOzylNlk
|
||||
TqJzDG4LOOiC/knv7ypgr7VH8TJ2PD9p2IR79hKjnVGmYvTtZ132qda+erbNb/9wwAzOeG49
|
||||
fgdiDSsUmvl15kEI+gBtZwADBQ/+PuZa9CEKryZpQ6hczzAN8oksk7MQaTBYdAd62zfaNa/Q
|
||||
QID3P5I8FsdXMCcKRipP95cZY8ZQKjBGt7O26Ts955Q71QS58rCXxeLP9/mbpm3kCwXrAkZH
|
||||
s2rH2awLOg6p8at2NJCn56AkldK1PyVtL0Qvl7nEOe+lcULqfLNEbGEgzev+ZK0v6So6lA2t
|
||||
i8derF5XkIMzCFdjcC1reZvfwNnxd/pQzuMfZOfPjPD6OKaBEWnWNZscU/ucNkgQpv+M2hCA
|
||||
paC3NaNiXl0TWsDp7981WSWnf6YZRTjLKyObdGmpo7Z+C9uVu2DbRlUiRAD3azBo4t03EZVB
|
||||
XMo/1opuqxyU6FLVW0mxLI2wh2M1Jt/RAvXLm5/Z9zGnPqwAObxkA518e71QXyM+GQ+M8Kyp
|
||||
PHr00oC+32PrKnFADI3s1oK5zMX0tjXb0voAgXTWNFsmi+efj7A3wt6G15ai70pOSTuFl9kb
|
||||
BqmCI4NmD5wV+uIR/jcmTf7jZKX5QPjDSJddJ5EeAsPXtur0wFZ9JwPM2FyNaeL92BjRYQPW
|
||||
C9vRtAUjJa2PSLofMDaEs+VD76WRI3E8kPIJiFeSqOLinclo1e41q3nyj5JBnwg50CwshW7g
|
||||
w/bU+IbzL0eZFjJ7ftJ+Xi/vlGtfbxjuKuhyD2PM3DNf9uXmcIV4ldEJzwhw2KmITwQYEQIA
|
||||
DwIbDAUCV7RsRgUJIkWdEAAKCRBxESqxbLM7OiJUAJ4y0+A//pOrp3rjo28Uyt34U+qRqwCe
|
||||
NqiZtKbSqpUgcLmKNgot+mSEAmmITwQYEQIADwUCSDrSMwIbDAUJDwmcAAAKCRBxESqxbLM7
|
||||
OnaqAJ0cUAs8+EPXqRYYbdu6ROINhExMkwCgpupi6uEG+b4yo6M+VlcQY7gl2DE=
|
||||
=XrDo
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
2
ci.fmf
2
ci.fmf
@ -1,2 +0,0 @@
|
||||
# Docs: https://docs.fedoraproject.org/en-US/ci/tmt/#_multiple_plans
|
||||
resultsdb-testcase: separate
|
||||
@ -1,103 +0,0 @@
|
||||
diff --git a/doc/file.man b/doc/file.man
|
||||
index bf78c0c..a0a363c 100644
|
||||
--- a/doc/file.man
|
||||
+++ b/doc/file.man
|
||||
@@ -340,12 +340,12 @@ never read them.
|
||||
.It Fl P , Fl Fl parameter Ar name=value
|
||||
Set various parameter limits.
|
||||
.Bl -column "elf_phnum" "Default" "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
|
||||
+.Bl -column "elf_phnum" "Default" "XXXXXXXXXXXXXXXXXXXXXXXXXXX" -offset indent
|
||||
.It Sy "Name" Ta Sy "Default" Ta Sy "Explanation"
|
||||
.It Li bytes Ta 1M Ta max number of bytes to read from file
|
||||
.It Li elf_notes Ta 256 Ta max ELF notes processed
|
||||
.It Li elf_phnum Ta 2K Ta max ELF program sections processed
|
||||
.It Li elf_shnum Ta 32K Ta max ELF sections processed
|
||||
-.It Li elf_shsize Ta 128MB Ta max ELF section size processed
|
||||
.It Li encoding Ta 65K Ta max number of bytes to determine encoding
|
||||
.It Li indir Ta 50 Ta recursion limit for indirect magic
|
||||
.It Li name Ta 50 Ta use count limit for name/use magic
|
||||
diff --git a/src/apprentice.c b/src/apprentice.c
|
||||
index 7907841..1d862df 100644
|
||||
--- a/src/apprentice.c
|
||||
+++ b/src/apprentice.c
|
||||
@@ -577,7 +577,6 @@ file_ms_alloc(int flags)
|
||||
ms->indir_max = FILE_INDIR_MAX;
|
||||
ms->name_max = FILE_NAME_MAX;
|
||||
ms->elf_shnum_max = FILE_ELF_SHNUM_MAX;
|
||||
- ms->elf_shsize_max = FILE_ELF_SHSIZE_MAX;
|
||||
ms->elf_phnum_max = FILE_ELF_PHNUM_MAX;
|
||||
ms->elf_notes_max = FILE_ELF_NOTES_MAX;
|
||||
ms->regex_max = FILE_REGEX_MAX;
|
||||
diff --git a/src/file.c b/src/file.c
|
||||
index 31c1035..4fa275c 100644
|
||||
--- a/src/file.c
|
||||
+++ b/src/file.c
|
||||
@@ -156,8 +156,6 @@ file_private struct {
|
||||
MAGIC_PARAM_ELF_PHNUM_MAX, 0 },
|
||||
{ "elf_shnum", 0, FILE_ELF_SHNUM_MAX, "max ELF sections processed",
|
||||
MAGIC_PARAM_ELF_SHNUM_MAX, 0 },
|
||||
- { "elf_shsize", 0, FILE_ELF_SHSIZE_MAX, "max ELF section size",
|
||||
- MAGIC_PARAM_ELF_SHSIZE_MAX, 0 },
|
||||
{ "encoding", 0, FILE_ENCODING_MAX, "max bytes to scan for encoding",
|
||||
MAGIC_PARAM_ENCODING_MAX, 0 },
|
||||
{ "indir", 0, FILE_INDIR_MAX, "recursion limit for indirection",
|
||||
diff --git a/src/file.h b/src/file.h
|
||||
index 78f574e..049ef3c 100644
|
||||
--- a/src/file.h
|
||||
+++ b/src/file.h
|
||||
@@ -492,14 +492,12 @@ struct magic_set {
|
||||
uint16_t regex_max;
|
||||
size_t bytes_max; /* number of bytes to read from file */
|
||||
size_t encoding_max; /* bytes to look for encoding */
|
||||
- size_t elf_shsize_max;
|
||||
#ifndef FILE_BYTES_MAX
|
||||
# define FILE_BYTES_MAX (7 * 1024 * 1024)/* how much of the file to look at */
|
||||
#endif /* above 0x6ab0f4 map offset for HelveticaNeue.dfont */
|
||||
#define FILE_ELF_NOTES_MAX 256
|
||||
#define FILE_ELF_PHNUM_MAX 2048
|
||||
#define FILE_ELF_SHNUM_MAX 32768
|
||||
-#define FILE_ELF_SHSIZE_MAX (128 * 1024 * 1024)
|
||||
#define FILE_INDIR_MAX 50
|
||||
#define FILE_NAME_MAX 50
|
||||
#define FILE_REGEX_MAX 8192
|
||||
diff --git a/src/magic.c b/src/magic.c
|
||||
index 052f997..5084dcc 100644
|
||||
--- a/src/magic.c
|
||||
+++ b/src/magic.c
|
||||
@@ -625,9 +625,6 @@ magic_setparam(struct magic_set *ms, int param, const void *val)
|
||||
case MAGIC_PARAM_ELF_SHNUM_MAX:
|
||||
ms->elf_shnum_max = CAST(uint16_t, *CAST(const size_t *, val));
|
||||
return 0;
|
||||
- case MAGIC_PARAM_ELF_SHSIZE_MAX:
|
||||
- ms->elf_shsize_max = *CAST(const size_t *, val);
|
||||
- return 0;
|
||||
case MAGIC_PARAM_ELF_NOTES_MAX:
|
||||
ms->elf_notes_max = CAST(uint16_t, *CAST(const size_t *, val));
|
||||
return 0;
|
||||
@@ -664,9 +661,6 @@ magic_getparam(struct magic_set *ms, int param, void *val)
|
||||
case MAGIC_PARAM_ELF_SHNUM_MAX:
|
||||
*CAST(size_t *, val) = ms->elf_shnum_max;
|
||||
return 0;
|
||||
- case MAGIC_PARAM_ELF_SHSIZE_MAX:
|
||||
- *CAST(size_t *, val) = ms->elf_shsize_max;
|
||||
- return 0;
|
||||
case MAGIC_PARAM_ELF_NOTES_MAX:
|
||||
*CAST(size_t *, val) = ms->elf_notes_max;
|
||||
return 0;
|
||||
diff --git a/src/readelf.c b/src/readelf.c
|
||||
index a2a66dd..71c0ad1 100644
|
||||
--- a/src/readelf.c
|
||||
+++ b/src/readelf.c
|
||||
@@ -1450,12 +1450,6 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
- if (xsh_size > ms->elf_shsize_max) {
|
||||
- file_error(ms, errno, "Note section size too "
|
||||
- "big (%ju > %zu)", (uintmax_t)xsh_size,
|
||||
- ms->elf_shsize_max);
|
||||
- return -1;
|
||||
- }
|
||||
if ((nbuf = malloc(xsh_size)) == NULL) {
|
||||
file_error(ms, errno, "Cannot allocate memory"
|
||||
" for note");
|
||||
@ -1,36 +0,0 @@
|
||||
From 218fdf813fd5ccecbb8887a1b62509cd1c6dd3a1 Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Fri, 28 Jul 2023 14:38:25 +0000
|
||||
Subject: [PATCH] deal with 32 bit time_t
|
||||
|
||||
---
|
||||
src/file.h | 8 +++++---
|
||||
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/file.h b/src/file.h
|
||||
index 2e0494d2f..78f574ea1 100644
|
||||
--- a/src/file.h
|
||||
+++ b/src/file.h
|
||||
@@ -27,7 +27,7 @@
|
||||
*/
|
||||
/*
|
||||
* file.h - definitions for file(1) program
|
||||
- * @(#)$File: file.h,v 1.247 2023/07/27 19:40:22 christos Exp $
|
||||
+ * @(#)$File: file.h,v 1.248 2023/07/28 14:38:25 christos Exp $
|
||||
*/
|
||||
|
||||
#ifndef __file_h__
|
||||
@@ -159,9 +159,11 @@
|
||||
/*
|
||||
* Dec 31, 23:59:59 9999
|
||||
* we need to make sure that we don't exceed 9999 because some libc
|
||||
- * implementations like muslc crash otherwise
|
||||
+ * implementations like muslc crash otherwise. If you are unlucky
|
||||
+ * to be running on a system with a 32 bit time_t, then it is even less.
|
||||
*/
|
||||
-#define MAX_CTIME CAST(time_t, 0x3afff487cfULL)
|
||||
+#define MAX_CTIME \
|
||||
+ CAST(time_t, sizeof(time_t) > 4 ? 0x3afff487cfULL : 0x7fffffffULL)
|
||||
|
||||
#define FILE_BADSIZE CAST(size_t, ~0ul)
|
||||
#define MAXDESC 64 /* max len of text description/MIME type */
|
||||
@ -1,23 +0,0 @@
|
||||
From aa86458e499d6279c2fd18e98425e6ae891d0f33 Mon Sep 17 00:00:00 2001
|
||||
From: Christos Zoulas <christos@zoulas.com>
|
||||
Date: Mon, 10 Mar 2025 20:51:11 +0000
|
||||
Subject: [PATCH] PR/624: vmihalko: Use the bcachefs-uuid for erofs
|
||||
|
||||
---
|
||||
magic/Magdir/filesystems | 5 +++--
|
||||
1 file changed, 2 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/magic/Magdir/filesystems b/magic/Magdir/filesystems
|
||||
index 533518aeb..28178d1b6 100644
|
||||
--- a/magic/Magdir/filesystems
|
||||
+++ b/magic/Magdir/filesystems
|
||||
@@ -2654,7 +2654,8 @@
|
||||
#>1060 lelong x \b, blocks=%d
|
||||
#>1064 lelong x \b, metadata@%#x
|
||||
#>1068 lelong x \b, xattr@%#x
|
||||
->1072 guid x \b, uuid=%s
|
||||
+>1072 guid x \b, uuid=
|
||||
+>1072 use bcachefs-uuid
|
||||
>1088 string >0 \b, name=%s
|
||||
>1104 lelong >0 \b, incompat:
|
||||
>>1104 lelong &1 LZ4_0PADDING
|
||||
@ -1,7 +0,0 @@
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- rhel-*
|
||||
decision_context: osci_compose_gate
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/file-CI-plan.functional}
|
||||
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional}
|
||||
@ -1,5 +0,0 @@
|
||||
summary: fedora CI tests plan
|
||||
discover:
|
||||
how: fmf
|
||||
execute:
|
||||
how: tmt
|
||||
@ -1,11 +0,0 @@
|
||||
summary: Internal Tier 1 tests
|
||||
|
||||
discover:
|
||||
how: fmf
|
||||
url: https://pkgs.devel.redhat.com/git/tests/file
|
||||
filter: 'tier: 1 | tag: CI-Tier-1'
|
||||
execute:
|
||||
how: tmt
|
||||
adjust:
|
||||
enabled: false
|
||||
when: distro == centos-stream or distro == fedora
|
||||
2
sources
2
sources
@ -1,2 +0,0 @@
|
||||
SHA512 (file-5.45.tar.gz) = 12611a59ff766c22a55db4b4a9f80f95a0a2e916a1d8593612c6ead32c247102a8fdc23693c6bf81bda9b604d951a62c0051e91580b1b79e190a3504c0efc20a
|
||||
SHA512 (file-5.45.tar.gz.asc) = 56bf131b2f35e896788be19b4d8cd1c7ec942c794fb584d5e589375d22fbccebdd04c03e779fafc0c10840586dc41e64251b3de1767ae9ab95f5d3300f9af254
|
||||
@ -1,64 +0,0 @@
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Makefile of Support-local-additions-to-magic-files
|
||||
# Description: Support local additions to magic files
|
||||
# Author: Karel Srot <ksrot@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Copyright (c) 2012 Red Hat, Inc. All rights reserved.
|
||||
#
|
||||
# This copyrighted material is made available to anyone wishing
|
||||
# to use, modify, copy, or redistribute it subject to the terms
|
||||
# and conditions of the GNU General Public License version 2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be
|
||||
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
export TEST=Support-local-additions-to-magic-files
|
||||
export TESTVERSION=1.0
|
||||
|
||||
BUILT_FILES=
|
||||
|
||||
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||
|
||||
.PHONY: all install download clean
|
||||
|
||||
run: $(FILES) build
|
||||
./runtest.sh
|
||||
|
||||
build: $(BUILT_FILES)
|
||||
test -x runtest.sh || chmod a+x runtest.sh
|
||||
|
||||
clean:
|
||||
rm -f *~ $(BUILT_FILES)
|
||||
|
||||
|
||||
include /usr/share/rhts/lib/rhts-make.include
|
||||
|
||||
$(METADATA): Makefile
|
||||
@echo "Owner: Karel Srot <ksrot@redhat.com>" > $(METADATA)
|
||||
@echo "Name: $(TEST)" >> $(METADATA)
|
||||
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||
@echo "Description: Support local additions to magic files" >> $(METADATA)
|
||||
@echo "Type: Sanity" >> $(METADATA)
|
||||
@echo "TestTime: 5m" >> $(METADATA)
|
||||
@echo "RunFor: file" >> $(METADATA)
|
||||
@echo "Requires: file" >> $(METADATA)
|
||||
@echo "Priority: Normal" >> $(METADATA)
|
||||
@echo "License: GPLv2" >> $(METADATA)
|
||||
@echo "Confidential: no" >> $(METADATA)
|
||||
@echo "Destructive: no" >> $(METADATA)
|
||||
@echo "Releases: -RHEL4 -RHELServer5 -RHELClient5" >> $(METADATA)
|
||||
|
||||
rhts-lint $(METADATA)
|
||||
@ -1,9 +0,0 @@
|
||||
PURPOSE of Support-local-additions-to-magic-files
|
||||
Description: Test to support local additions to magic files
|
||||
Author: Karel Srot <ksrot@redhat.com>
|
||||
|
||||
Testing custom additions in
|
||||
/etc/magic
|
||||
$HOME/.magic
|
||||
$HOME/.magic.mgc
|
||||
|
||||
@ -1,17 +0,0 @@
|
||||
summary: Support local additions to magic files
|
||||
description: |+
|
||||
Testing custom additions in
|
||||
/etc/magic
|
||||
$HOME/.magic
|
||||
$HOME/.magic.mgc
|
||||
|
||||
contact: Karel Srot <ksrot@redhat.com>
|
||||
component:
|
||||
- file
|
||||
test: ./runtest.sh
|
||||
framework: beakerlib
|
||||
recommend:
|
||||
- file
|
||||
duration: 5m
|
||||
extra-summary: Support-local-additions-to-magic-files
|
||||
extra-task: Support-local-additions-to-magic-files
|
||||
@ -1,79 +0,0 @@
|
||||
#!/bin/bash
|
||||
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# runtest.sh of /CoreOS/file/Sanity/Support-local-additions-to-magic-files
|
||||
# Description: Test to support local additions to magic files
|
||||
# Author: Karel Srot <ksrot@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Copyright (c) 2012 Red Hat, Inc. All rights reserved.
|
||||
#
|
||||
# This copyrighted material is made available to anyone wishing
|
||||
# to use, modify, copy, or redistribute it subject to the terms
|
||||
# and conditions of the GNU General Public License version 2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be
|
||||
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
# Include Beaker environment
|
||||
. /usr/share/beakerlib/beakerlib.sh
|
||||
|
||||
PACKAGE="file"
|
||||
|
||||
FILEBACKUP=''
|
||||
|
||||
rlJournalStart
|
||||
rlPhaseStartSetup
|
||||
rlAssertRpm $PACKAGE
|
||||
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
||||
rlRun "pushd $TmpDir"
|
||||
[ -f /etc/magic ] && FILEBACKUP=1 && rlFileBackup /etc/magic
|
||||
[ -f $HOME/.magic ] && FILEBACKUP=1 && rlFileBackup $HOME/.magic
|
||||
[ -f $HOME/.magic.mgc ] && FILEBACKUP=1 && rlFileBackup $HOME/.magic.mgc
|
||||
rm -f /etc/magic $HOME/.magic $HOME/.magic.mgc
|
||||
rlRun "echo '0 string MYFILEFORMAT1 My file format version1' > /etc/magic"
|
||||
rlRun "echo '0 string MYFILEFORMAT2 My file format version2' > $HOME/.magic"
|
||||
rlRun "echo 'MYFILEFORMAT1' > testfile1"
|
||||
rlRun "echo 'MYFILEFORMAT2' > testfile2"
|
||||
rlRun "echo 'MYFILEFORMAT3' > testfile3"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest
|
||||
rlRun "file testfile1 &> out1" 0 "Testing pattern from /etc/magic"
|
||||
cat out1
|
||||
rlRun "grep 'My file format version1' out1" 0 "File should be identified as 'My file format version1'"
|
||||
|
||||
rlRun "file testfile2 &> out2" 0 "Testing pattern from $HOME/.magic"
|
||||
cat out2
|
||||
rlRun "grep 'My file format version2' out2" 0 "File should be identified as 'My file format version2'"
|
||||
|
||||
pushd $HOME;
|
||||
rlRun "file -C -m .magic" 0 "Preparing $HOME/.magic.mgc"
|
||||
ls -l $HOME/.magic.mgc
|
||||
rm -f $HOME/.magic
|
||||
popd
|
||||
|
||||
rlRun "file testfile2 &> out3" 0 "Testing pattern from $HOME/.magic.mgc"
|
||||
cat out3
|
||||
rlRun "grep 'My file format version2' out3" 0 "File should be identified as 'My file format version2' too"
|
||||
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartCleanup
|
||||
rlRun "popd"
|
||||
rlRun "rm -rf $TmpDir /etc/magic $HOME/.magic $HOME/.magic.mgc" 0 "Removing tmp directory and test files"
|
||||
[ -n "$FILEBACKUP" ] && rlFileRestore
|
||||
rlPhaseEnd
|
||||
rlJournalPrintText
|
||||
rlJournalEnd
|
||||
@ -1,11 +0,0 @@
|
||||
summary: bz2167964-file-fails-on-binary-with-big-note-section
|
||||
component:
|
||||
- file
|
||||
test: ./runtest.sh
|
||||
framework: beakerlib
|
||||
recommend:
|
||||
- binutils
|
||||
- file
|
||||
duration: 5m
|
||||
extra-summary: /CoreOS/file/Regression/bz2167964-file-fails-on-binary-with-big-note-section
|
||||
extra-task: /CoreOS/file/Regression/bz2167964-file-fails-on-binary-with-big-note-section
|
||||
@ -1,25 +0,0 @@
|
||||
#!/bin/bash
|
||||
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||
|
||||
PACKAGES="file binutils"
|
||||
rlJournalStart
|
||||
rlPhaseStartSetup
|
||||
rlAssertRpm --all
|
||||
rlRun "tmp=\$(mktemp -d)" 0 "Create tmp directory"
|
||||
rlRun "pushd \$tmp"
|
||||
rlRun "set -o pipefail"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest
|
||||
rlRun "truncate --size=100M note" 0 "Create a dummy 100 MB file"
|
||||
rlRun "objcopy --update-section .note.package=note /usr/bin/cp repro" \
|
||||
0 "Create a copy of cp with large .note.package section"
|
||||
rlRun "file repro" 0 "Run file of the reproducer"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartCleanup
|
||||
rlRun "popd"
|
||||
rlRun "rm -r \$tmp" 0 "Remove tmp directory"
|
||||
rlPhaseEnd
|
||||
rlJournalEnd
|
||||
@ -1,63 +0,0 @@
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Makefile of /CoreOS/file/Sanity/command-line-options
|
||||
# Description: Tests (most of) command line options available for the file command.
|
||||
# Author: Karel Srot <ksrot@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
|
||||
#
|
||||
# This copyrighted material is made available to anyone wishing
|
||||
# to use, modify, copy, or redistribute it subject to the terms
|
||||
# and conditions of the GNU General Public License version 2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be
|
||||
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
export TEST=/CoreOS/file/Sanity/command-line-options
|
||||
export TESTVERSION=1.0
|
||||
|
||||
BUILT_FILES=
|
||||
|
||||
FILES=$(METADATA) runtest.sh Makefile PURPOSE file_cmd_line_options.tar.gz
|
||||
|
||||
.PHONY: all install download clean
|
||||
|
||||
run: $(FILES) build
|
||||
./runtest.sh
|
||||
|
||||
build: $(BUILT_FILES)
|
||||
test -x runtest.sh || chmod a+x runtest.sh
|
||||
|
||||
clean:
|
||||
rm -f *~ $(BUILT_FILES)
|
||||
|
||||
|
||||
include /usr/share/rhts/lib/rhts-make.include
|
||||
|
||||
$(METADATA): Makefile
|
||||
@echo "Owner: Karel Srot <ksrot@redhat.com>" > $(METADATA)
|
||||
@echo "Name: $(TEST)" >> $(METADATA)
|
||||
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||
@echo "Description: Tests (most of) command line options available for the file command." >> $(METADATA)
|
||||
@echo "Type: Sanity" >> $(METADATA)
|
||||
@echo "TestTime: 10m" >> $(METADATA)
|
||||
@echo "RunFor: file zlib" >> $(METADATA)
|
||||
@echo "Requires: file bzip2" >> $(METADATA)
|
||||
@echo "Priority: Normal" >> $(METADATA)
|
||||
@echo "License: GPLv2" >> $(METADATA)
|
||||
@echo "Confidential: no" >> $(METADATA)
|
||||
@echo "Destructive: no" >> $(METADATA)
|
||||
|
||||
rhts-lint $(METADATA)
|
||||
@ -1,5 +0,0 @@
|
||||
PURPOSE of /CoreOS/file/Sanity/command-line-options
|
||||
Description: Tests (most of) command line options available for the file command.
|
||||
Author: Karel Srot <ksrot@redhat.com>
|
||||
|
||||
test multiple cmd line options
|
||||
Binary file not shown.
@ -1,15 +0,0 @@
|
||||
summary: Tests (most of) command line options available for the file command.
|
||||
description: |
|
||||
test multiple cmd line options
|
||||
contact: Karel Srot <ksrot@redhat.com>
|
||||
component:
|
||||
- file
|
||||
- zlib
|
||||
test: ./runtest.sh
|
||||
framework: beakerlib
|
||||
recommend:
|
||||
- bzip2
|
||||
- file
|
||||
duration: 10m
|
||||
extra-summary: /CoreOS/file/Sanity/command-line-options
|
||||
extra-task: /CoreOS/file/Sanity/command-line-options
|
||||
@ -1,159 +0,0 @@
|
||||
#!/bin/bash
|
||||
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# runtest.sh of /CoreOS/file/Sanity/command-line-options
|
||||
# Description: Test (most of) command line options available for the file command.
|
||||
# Author: Karel Srot <ksrot@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
|
||||
#
|
||||
# This copyrighted material is made available to anyone wishing
|
||||
# to use, modify, copy, or redistribute it subject to the terms
|
||||
# and conditions of the GNU General Public License version 2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be
|
||||
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
# Include rhts environment
|
||||
. /usr/share/beakerlib/beakerlib.sh
|
||||
|
||||
PACKAGE="file"
|
||||
|
||||
rlJournalStart
|
||||
rlPhaseStartSetup
|
||||
rlAssertRpm $PACKAGE
|
||||
rlRun "TmpDir=\`mktemp -d\`" 0 "Creating tmp directory"
|
||||
rlRun "cp file_cmd_line_options.tar.gz $TmpDir" 0 "Copying sample files"
|
||||
rlRun "pushd $TmpDir"
|
||||
rlRun "tar -xzf file_cmd_line_options.tar.gz" 0 "Extracting sample files"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest "--brief"
|
||||
rlRun "file -b dummy_file | grep -q dummy_file" 1 "Checking -b"
|
||||
rlRun "file --brief dummy_file | grep -q dummy_file" 1 "Checking --brief"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest "--exclude"
|
||||
rlRun "file /bin/bash | grep -q 'dynamically linked'"
|
||||
rlRun "file -e elf /bin/bash | grep -q 'dynamically linked'" 1 "Checking -e elf"
|
||||
rlRun "file --exclude elf /bin/bash | grep -q 'dynamically linked'" 1 "Checking --exclude elf"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest "--files-from"
|
||||
rlRun 'file -f list.txt | grep -q /dev/zero' 0 "Checking -f file"
|
||||
rlRun 'echo "/dev/zero" | file -f - | grep -q /dev/zero' 0 "Checking -f -"
|
||||
rlRun 'file --files-from list.txt | grep -q /dev/zero' 0 "Checking --files-from file"
|
||||
rlRun 'echo "/dev/zero" | file --files-from - | grep -q /dev/zero' 0 "Checking --files-from -"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest "--separator"
|
||||
rlRun "file -F '#' dummy_file | grep -q 'dummy_file#'" 0 "Checking -F"
|
||||
rlRun "file --separator '#' dummy_file | grep -q 'dummy_file#'" 0 "Checking --separator"
|
||||
rlPhaseEnd
|
||||
|
||||
if ! rlIsRHEL 4; then # not for RHEL4
|
||||
rlPhaseStartTest "--no-dereference"
|
||||
rlRun "POSIXLY_CORRECT=1 file symlink | grep -q 'symlink: ASCII text'" 0 "Checking -h"
|
||||
rlRun "POSIXLY_CORRECT=1 file -h symlink | grep -q 'symlink: symbolic link'" 0 "Checking -h"
|
||||
rlRun "POSIXLY_CORRECT=1 file symlink | grep -q 'symlink: ASCII text'" 0 "Checking --no-dereference"
|
||||
rlRun "POSIXLY_CORRECT=1 file --no-dereference symlink | grep -q 'symlink: symbolic link'" 0 "Checking --no-dereference"
|
||||
rlPhaseEnd
|
||||
fi
|
||||
|
||||
rlPhaseStartTest "--mime"
|
||||
rlRun "file -i dummy_file | grep -q 'text/plain; charset=us-ascii'" 0 "Checking -i"
|
||||
rlRun "file --mime dummy_file | grep -q 'text/plain; charset=us-ascii'" 0 "Checking --mime"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest "--dereference"
|
||||
rlRun "file -L symlink | grep -q 'symbolic link'" 1 "Checking -L"
|
||||
rlRun "file -L symlink | grep -q 'ASCII text'" 0 "Checking -L"
|
||||
rlRun "file --dereference symlink | grep -q 'symbolic link'" 1 "Checking --dereference"
|
||||
rlRun "file --dereference symlink | grep -q 'ASCII text'" 0 "Checking --dereference"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest "--keep-going"
|
||||
rlRun "file -k two_types.txt | grep 'Future Composer' | grep 'Apple QuickTime'" 0 "Checking -k"
|
||||
rlRun "file --keep-going two_types.txt | grep 'Future Composer' | grep 'Apple QuickTime'" 0 "Checking --keep-going"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest "--no-pad"
|
||||
rlRun 'WC1=`file dummy_file symlink | grep symlink | wc -c`; echo $WC1'
|
||||
rlRun 'WC2=`file symlink | wc -c`;echo $WC2'
|
||||
rlRun 'WC3=`file -N dummy_file symlink | grep symlink | wc -c`;echo $WC3'
|
||||
rlRun '[ $WC1 -gt $WC3 -a $WC2 -eq $WC3 ]' 0 "Checking -N"
|
||||
rlRun 'WC3=`file --no-pad dummy_file symlink | grep symlink | wc -c`;echo $WC3'
|
||||
rlRun '[ $WC1 -gt $WC3 -a $WC2 -eq $WC3 ]' 0 "Checking --no-pad"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest "--preserve-date"
|
||||
rlRun 'touch dummy_file; TS1=`stat -c "%X" dummy_file`;echo $TS1; sleep 3'
|
||||
rlRun 'file -p dummy_file; TS2=`stat -c "%X" dummy_file`;echo $TS2'
|
||||
rlRun 'file dummy_file; TS3=`stat -c "%X" dummy_file`;echo $TS3'
|
||||
rlRun '[ $TS3 -gt $TS1 -a $TS1 -eq $TS2 ]' 0 "Checking -p"
|
||||
rlRun 'touch dummy_file; TS1=`stat -c "%X" dummy_file`;echo $TS1; sleep 3'
|
||||
rlRun 'file --preserve-date dummy_file; TS2=`stat -c "%X" dummy_file`;echo $TS2'
|
||||
rlRun 'file dummy_file; TS3=`stat -c "%X" dummy_file`;echo $TS3'
|
||||
rlRun '[ $TS3 -gt $TS1 -a $TS1 -eq $TS2 ]' 0 "Checking --preserve-date"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest "--special-files"
|
||||
rlRun "file /dev/zero | grep -q 'character special'"
|
||||
rlRun "file -s /dev/zero | grep -q 'data'" 0 "Checking -s"
|
||||
rlRun "file --special-files /dev/zero | grep -q 'data'" 0 "Checking --special-files"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest "--version"
|
||||
rlRun "file -v 2>&1 | grep -E 'file-[[:digit:]]\.[[:digit:]]'" 0 "Checking -v"
|
||||
rlRun "file --version 2>&1 | grep -E 'file-[[:digit:]]\.[[:digit:]]'" 0 "Checking --version"
|
||||
rlPhaseEnd
|
||||
|
||||
if ! rlIsRHEL 4; then # not for RHEL4 - this will never be fixed
|
||||
rlPhaseStartTest "--uncompress"
|
||||
rlRun "file dummy_file.bz2 | grep -q 'ASCII text'" 1
|
||||
rlRun "file -z dummy_file.bz2 | grep -q 'ASCII text'" 0 "Checking -z"
|
||||
rlRun "file --uncompress dummy_file.bz2 | grep -q 'ASCII text'" 0 "Checking --uncompress"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest "--help"
|
||||
rlRun "file --help 2>&1 | grep -iq 'usage:'" 0 "Checking --help"
|
||||
rlPhaseEnd
|
||||
fi
|
||||
|
||||
if [ `rlGetDistroRelease` -ge 6 ]; then
|
||||
|
||||
rlPhaseStartTest "--mime-type"
|
||||
rlRun "file --mime-type dummy_file | grep -q 'text/plain'" 0 "Checking --mime-type"
|
||||
rlRun "file --mime-type dummy_file | grep -q 'us-ascii'" 1 "Checking --mime-type"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest "--mime-encoding"
|
||||
rlRun "file --mime-encoding dummy_file | grep -q 'text/plain'" 1 "Checking --mime-encoding"
|
||||
rlRun "file --mime-encoding dummy_file | grep -q 'us-ascii'" 0 "Checking --mime-encoding"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest "--print0"
|
||||
rlRun "file -0 dummy_file | cat -A | grep -q 'dummy_file^@:'" 0 "Checking -0"
|
||||
rlRun "file --print0 dummy_file | cat -A | grep -q 'dummy_file^@:'" 0 "Checking --print0"
|
||||
rlPhaseEnd
|
||||
fi
|
||||
|
||||
rlPhaseStartCleanup
|
||||
rlRun "popd"
|
||||
rlRun "rm -rf $TmpDir" 0 "Deleting tmp directory"
|
||||
rlPhaseEnd
|
||||
|
||||
rlJournalPrintText
|
||||
rlJournalEnd
|
||||
@ -1,63 +0,0 @@
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Makefile of file-tests
|
||||
# Description: File regressions detection tests from github.com:file/file-tests.git
|
||||
# Author: Jan Kaluza <jkaluza@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Copyright (c) 2023 Red Hat, Inc. All rights reserved.
|
||||
#
|
||||
# This copyrighted material is made available to anyone wishing
|
||||
# to use, modify, copy, or redistribute it subject to the terms
|
||||
# and conditions of the GNU General Public License version 2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be
|
||||
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
export TEST=file-tests
|
||||
export TESTVERSION=1.0
|
||||
|
||||
BUILT_FILES=
|
||||
|
||||
FILES=$(METADATA) blocklist.txt db main.fmf Makefile prepare.sh readfile.py README reference reference.sh runtest.sh
|
||||
|
||||
.PHONY: all install download clean
|
||||
|
||||
run: $(FILES) build
|
||||
./runtest.sh
|
||||
|
||||
build: $(BUILT_FILES)
|
||||
test -x runtest.sh || chmod a+x runtest.sh
|
||||
|
||||
clean:
|
||||
rm -f *~ $(BUILT_FILES)
|
||||
|
||||
|
||||
include /usr/share/rhts/lib/rhts-make.include
|
||||
|
||||
$(METADATA): Makefile
|
||||
@echo "Owner: Jan Kaluza <jkaluza@redhat.com>" > $(METADATA)
|
||||
@echo "Name: $(TEST)" >> $(METADATA)
|
||||
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||
@echo "Description: File regressions detection tests from github.com:file/file-tests.git" >> $(METADATA)
|
||||
@echo "Type: Sanity" >> $(METADATA)
|
||||
@echo "TestTime: 20m" >> $(METADATA)
|
||||
@echo "RunFor: file" >> $(METADATA)
|
||||
@echo "Requires: file" >> $(METADATA)
|
||||
@echo "Priority: Normal" >> $(METADATA)
|
||||
@echo "License: GPLv2" >> $(METADATA)
|
||||
@echo "Confidential: no" >> $(METADATA)
|
||||
@echo "Destructive: no" >> $(METADATA)
|
||||
|
||||
rhts-lint $(METADATA)
|
||||
@ -1,3 +0,0 @@
|
||||
./prepare.sh
|
||||
./reference.sh [--mime-type]
|
||||
./runtest.sh [--mime-type]
|
||||
@ -1,22 +0,0 @@
|
||||
cab/cabinet.cab
|
||||
db/test.db
|
||||
doc/encrypted.doc
|
||||
doc/PMD.doc
|
||||
dump/big-endian-dump
|
||||
elf/library.so
|
||||
elf/pie-now.out
|
||||
elf/pie.out
|
||||
img/qcow2.img
|
||||
jpg/xsane-zoom-in.jpg
|
||||
lnk/windows_link.lnk
|
||||
mach-o/PythonLauncher
|
||||
misc/scc-text
|
||||
pbm/icontopbm-back-from-icon.pbm
|
||||
pcd/photo_cd.pcd
|
||||
so/libaio.so
|
||||
tar.gz/a.tar.gz
|
||||
tgz/broken-file.tgz
|
||||
webm/bunny.webm
|
||||
xls/encrypted.xls
|
||||
xls/excel-file.xls
|
||||
xps/presentation.xps
|
||||
Binary file not shown.
@ -1,3 +0,0 @@
|
||||
AUTHOR: Jan Kaluza <jkaluza@redhat.com>
|
||||
URL: Created it myself
|
||||
LICENSE: public domain
|
||||
Binary file not shown.
@ -1,3 +0,0 @@
|
||||
AUTHOR: Jan Kaluza
|
||||
URL: Created it myself
|
||||
LICENSE: public domain
|
||||
Binary file not shown.
@ -1,4 +0,0 @@
|
||||
AUTHOR: Intra2net <info@intra2net.com>
|
||||
URL: Created it myself
|
||||
LICENSE: public domain
|
||||
NOTE: AppleDouble files appear in folder __MACOSX of zip files created on MacOSX systems with same name and path as the "real" zip file contents
|
||||
Binary file not shown.
@ -1,3 +0,0 @@
|
||||
AUTHOR: Intra2net <info@intra2net.com>
|
||||
URL: Created it myself
|
||||
LICENSE: public domain
|
||||
Binary file not shown.
@ -1,3 +0,0 @@
|
||||
AUTHOR: Jan Kaluza <jkaluza@redhat.com>
|
||||
URL: Created it myself
|
||||
LICENSE: public domain
|
||||
Binary file not shown.
@ -1,3 +0,0 @@
|
||||
AUTHOR: Christian Herdtweck
|
||||
SOURCE: self-created
|
||||
LICENSE: public domain
|
||||
Binary file not shown.
@ -1,3 +0,0 @@
|
||||
AUTHOR: Christian Herdtweck
|
||||
SOURCE: self-created
|
||||
LICENSE: public domain
|
||||
Binary file not shown.
@ -1,5 +0,0 @@
|
||||
animated cursor from http://www.rw-designer.com/cursor-detail/24909
|
||||
original file name: 03 Working In Background.ani
|
||||
|
||||
license: "Release to PUblic Domain" license ("You are free: To use this work for any legal purpose.")
|
||||
Published on May 14th 2011 by NesManiac
|
||||
@ -1,20 +0,0 @@
|
||||
<script language="vbscript" runat="server">
|
||||
|
||||
sub Application_OnStart
|
||||
Application("status")=1
|
||||
end sub
|
||||
|
||||
sub Session_OnStart
|
||||
Application("status")=2
|
||||
end sub
|
||||
|
||||
sub Application_OnEnd
|
||||
Application("status")=3
|
||||
end sub
|
||||
|
||||
sub Session_OnEnd
|
||||
Application("status")=4
|
||||
end sub
|
||||
|
||||
</script>
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
AUTHOR: Christian Herdtweck
|
||||
URL: None (self-created)
|
||||
LICENSE: public domain
|
||||
@ -1,97 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
|
||||
<html lang="en">
|
||||
|
||||
|
||||
<!-- extra lang tag was here --><head>
|
||||
<title>Web Site Policies and Important Links [NEI Tools]</title>
|
||||
<meta name="description" content="Eye health information and resources for the public and professionals." />
|
||||
<meta name="keywords" content="eye, health, research, information" />
|
||||
|
||||
|
||||
<meta name="creator" content="National Eye Institute" />
|
||||
<meta name="language" content="English" />
|
||||
|
||||
<meta name="MSSmartTagsPreventParsing" content="TRUE" />
|
||||
<meta name="viewport" content="initial-scale=1, width=device-width" />
|
||||
|
||||
<script language="javascript" type="text/javascript" src="/js/leavesite.js"></script>
|
||||
|
||||
<script type="text/javascript" src="/js/textsize.js"></script>
|
||||
<script type="text/javascript" src="/js/cookies.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||
<script src="http://sf1-na.readspeaker.com/script/5823/ReadSpeaker.js?pids=embhl" type="text/javascript"></script>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/css/Reset.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/css/BaseStyles.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/css/nei.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/css/media.css" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/css/dropdown_nav5.css" />
|
||||
<link rel="stylesheet" type="text/css" media="print" href="/css/print.css" />
|
||||
|
||||
<script type="text/javascript" async src="//assets.pinterest.com/js/pinit.js"></script>
|
||||
|
||||
|
||||
<!--google analytics start-->
|
||||
<script type="text/javascript">
|
||||
|
||||
var _gaq = _gaq || [];
|
||||
_gaq.push(['_setAccount', 'UA-1875828-4']);
|
||||
_gaq.push(['_setDomainName', '.nei.nih.gov']);
|
||||
_gaq.push(['_trackPageview']);
|
||||
|
||||
(function() {
|
||||
var ga = document.createElement('script');
|
||||
ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
/*Google Analytics Automatic External Link, Downloads, Mailto Tracking- jQuery GA Async Version*/
|
||||
if (typeof jQuery != 'undefined') {
|
||||
jQuery(document).ready(function($) {
|
||||
var filetypes = /\.(zip|exe|pdf|doc|xls|ppt|mp3)$/i;
|
||||
var baseHref = '';
|
||||
if (jQuery('base').attr('href') != undefined)
|
||||
baseHref = jQuery('base').attr('href');
|
||||
jQuery('a').each(function() {
|
||||
var href = jQuery(this).attr('href');
|
||||
if (href && (href.match(/^https?\:/i)) && (!href.match(document.domain))) {
|
||||
jQuery(this).click(function() {
|
||||
var extLink = href.replace(/^https?\:\/\//i, '');
|
||||
_gaq.push(['_trackEvent', 'External', 'Link Click', extLink]);
|
||||
if (jQuery(this).attr('target') != undefined && jQuery(this).attr('target').toLowerCase() != '_blank') {
|
||||
setTimeout(function() { location.href = href; }, 200);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
else if (href && href.toLowerCase().match('.*nih.gov.*') && href.toLowerCase().indexOf('nei.nih.gov') == -1) {
|
||||
jQuery(this).click(function() {
|
||||
//Exit link tracking for other .nih.gov domains (excludes nei.nih.gov)
|
||||
var extLink = href.replace(/^https?\:\/\//i, '');
|
||||
_gaq.push(['_trackEvent', 'External', 'Link Click', extLink]);
|
||||
});
|
||||
}
|
||||
else if (href && href.match(/^mailto\:/i)) {
|
||||
jQuery(this).click(function() {
|
||||
var mailLink = href.replace(/^mailto\:/i, '');
|
||||
_gaq.push(['_trackEvent', 'Email', 'mailto', mailLink]);
|
||||
});
|
||||
}
|
||||
else if (href && href.match(filetypes)) {
|
||||
jQuery(this).click(function() {
|
||||
var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined;
|
||||
var filePath = href;
|
||||
_gaq.push(['_trackEvent', 'Download',extension+ ' Click', filePath]);
|
||||
i
|
||||
@ -1,3 +0,0 @@
|
||||
AUTHOR: National Eye Institute
|
||||
URL: http://www.nei.nih.gov/tools/policies.asp
|
||||
LICENSE: Public Domain (Courtesy: National Eye Institute, National Institutes of Health (NEI/NIH))
|
||||
@ -1,186 +0,0 @@
|
||||
DEFINT A-Z
|
||||
DECLARE SUB BigTextEnd (SndT, PlyT)
|
||||
DECLARE SUB BigText (Factor%, S$, Y%, X%, C%)
|
||||
DECLARE SUB Plot (Num, Y, X)
|
||||
STACK 512
|
||||
DIM Grid(20, 20) AS STRING * 1
|
||||
DIM Colors(3) AS INTEGER
|
||||
DIM Gcol(20, 20) AS INTEGER
|
||||
DIM SHARED Text AS INTEGER
|
||||
DIM SHARED Brick(65, 3)
|
||||
DIM Pic&(8192)
|
||||
DIM Temp(5000), TempVar(5000)
|
||||
DIM SHARED SndT, PlyT
|
||||
|
||||
DIM A$(186)
|
||||
L$ = CHR$(0) + CHR$(75)
|
||||
R$ = CHR$(0) + CHR$(77)
|
||||
U$ = CHR$(0) + CHR$(72)
|
||||
D$ = CHR$(0) + CHR$(80)
|
||||
F1$ = CHR$(0) + CHR$(59)
|
||||
F2$ = CHR$(0) + CHR$(60)
|
||||
F3$ = CHR$(0) + CHR$(61)
|
||||
F4$ = CHR$(0) + CHR$(62)
|
||||
|
||||
PLAY "o0MBL8 "
|
||||
DATA A16,MN, A2,o1,ML,E4.,D-32,C32,D2
|
||||
DATA C16,ML,O0,B16,o0,D-16,MN,o1,C,C,o0,B2,A4.,ML,C16,G16
|
||||
DATA F2,o1,C4.,o0,ML,B16,G16,A-4
|
||||
DATA A4,B.,o1,MS,C16,MN,D.
|
||||
DATA o0,ML,G16,B16,MN,o1,E,E,ML,E4,D8,ML,C16,E16,MN,E2
|
||||
DATA T240
|
||||
DATA o0,F2,ML,B2,B4,MN,E4,ML,A2
|
||||
DATA A,MN,D,ML,G2,G4,MN,C4,F2
|
||||
DATA T120
|
||||
DATA o0,MS,E4,o1,ML,C2,C8
|
||||
DATA MN,F8,ML,G16,F16,E16,D16
|
||||
DATA C2,C8,MN,F8,ML,G16,F16,E16,D16
|
||||
|
||||
DATA o1,Co0,G,ML,A16,G16,F16,D16,MN,G,B-,o1,ML,C16,o0,B16,A16,G16,MN,o1,C2.
|
||||
DATA ML,o0,G,B,o1,D,MN,D,D4,P8,G,G
|
||||
DATA F+,F,F,E,P8,E-,ML,E,D,D,E,E,D,D,C,MN,C4,ML,o0,B.,A16,B16,MN,A4,P8,A
|
||||
DATA o0,ML,D,B4.,A,G4,P8,D,B4,A,G4,P8,D,o1,E2.,MS,D,C,o0,B,A,G4,P4,P8,ML,E16
|
||||
|
||||
PRINT "Please Wait..."
|
||||
FOR J = 1 TO 184
|
||||
READ A$(J)
|
||||
NEXT J
|
||||
LOCATE 1, 1: PRINT " "
|
||||
|
||||
SndT = 1
|
||||
PlyT = 1
|
||||
Com$ = UCASE$(COMMAND$)
|
||||
|
||||
IF INSTR(Com$, "NOGR") THEN NoGr = 1
|
||||
IF INSTR(Com$, "TEXT") THEN
|
||||
Text = 1
|
||||
GOTO Txt
|
||||
END IF
|
||||
IF Text <> 1 THEN
|
||||
ON ERROR GOTO Text
|
||||
IF INSTR(Com$, "MCGA") THEN
|
||||
SCREEN 13
|
||||
MCGA = 1
|
||||
ELSE
|
||||
SCREEN 9
|
||||
END IF
|
||||
ON ERROR GOTO 0
|
||||
FOR J = 1 TO 3
|
||||
LINE (1, 1)-(7, 7), J, BF
|
||||
LINE (1, 1)-(1, 7), 3 + J
|
||||
LINE (1, 1)-(7, 1), 3 + J
|
||||
LINE (7, 1)-(7, 7), 8 + J
|
||||
LINE (7, 7)-(2, 7), 8 + J
|
||||
GET (1, 1)-(7, 7), Brick(0, J)
|
||||
NEXT J
|
||||
IF MCGA <> 1 THEN
|
||||
PALETTE 4, 8
|
||||
PALETTE 5, 16
|
||||
PALETTE 6, 24
|
||||
ELSE
|
||||
PALETTE 4, 1376256
|
||||
PALETTE 5, 5376&
|
||||
PALETTE 6, 1381632
|
||||
END IF
|
||||
CLS
|
||||
IF MCGA <> 1 THEN
|
||||
WINDOW (0, 0)-(319, 199)
|
||||
WIDTH 40
|
||||
END IF
|
||||
IF MCGA <> 1 AND NoGr <> 1 THEN
|
||||
LINE (118, 100)-(208, 112), 15, B
|
||||
LOCATE 14, 16: PRINT "Please Wait"
|
||||
GET (119, 101)-(207, 111), Temp
|
||||
PUT (119, 101), Temp
|
||||
PAINT (122, 102), 7, 15
|
||||
PUT (119, 101), Temp, OR
|
||||
LINE (118, 100)-(208, 112), 8, B
|
||||
LINE (208, 101)-(208, 112), 15
|
||||
LINE (119, 112)-(208, 112), 15
|
||||
|
||||
ON ERROR GOTO Ferror
|
||||
OPEN "Piles.NAS" FOR INPUT AS #1
|
||||
FOR J% = 0 TO 8192
|
||||
INPUT #1, Pic&(J%)
|
||||
NEXT J%
|
||||
CLOSE
|
||||
END IF
|
||||
END IF
|
||||
|
||||
GOTO Start
|
||||
|
||||
Ferror:
|
||||
RESUME Start:
|
||||
|
||||
Text:
|
||||
RESUME Txt
|
||||
|
||||
Txt:
|
||||
Text = 1
|
||||
SCREEN 0
|
||||
WIDTH 40
|
||||
CLS
|
||||
|
||||
Start:
|
||||
|
||||
Score& = 0
|
||||
|
||||
ON ERROR GOTO 0
|
||||
|
||||
IF Text <> 1 THEN
|
||||
CLS
|
||||
IF MCGA <> 1 AND NoGr <> 1 THEN
|
||||
PUT (0, 0), Pic&(0)
|
||||
COLOR 9
|
||||
LINE (160, 0)-(160, 160), 9
|
||||
LINE (0, 160)-(160, 160), 9
|
||||
END IF
|
||||
LINE (0, 0)-(159, 159), 0, BF
|
||||
ELSE
|
||||
FOR J = 1 TO 24
|
||||
LOCATE 25, 1
|
||||
PRINT SPACE$(34);
|
||||
NEXT J
|
||||
END IF
|
||||
|
||||
RANDOMIZE TIMER
|
||||
|
||||
FOR X = 1 TO 20
|
||||
FOR Y = 1 TO 20
|
||||
Grid(X, Y) = " "
|
||||
Gcol(X, Y) = 0
|
||||
NEXT Y
|
||||
NEXT X
|
||||
|
||||
FOR J = 1 TO 20
|
||||
LOCATE J, 1
|
||||
PRINT SPACE$(20)
|
||||
NEXT J
|
||||
|
||||
COLOR 9
|
||||
LOCATE 1, 25
|
||||
PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"
|
||||
LOCATE 2, 25
|
||||
PRINT "³ S C O R E ³"
|
||||
LOCATE 3, 25
|
||||
PRINT "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
|
||||
LOCATE 4, 25
|
||||
PRINT USING "³ ###,###,### ³"; Score
|
||||
LOCATE 5, 25
|
||||
PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"
|
||||
IF Text <> 1 THEN
|
||||
LINE (197, 6)-(197, 19), 1
|
||||
LINE (197, 5)-(306, 5), 1
|
||||
LINE (197, 22)-(197, 35), 1
|
||||
LINE (197, 21)-(306, 21), 1
|
||||
LINE (197, 37)-(308, 37), 1
|
||||
LINE (309, 37)-(309, 5), 1
|
||||
COLOR 1
|
||||
LOCATE 2, 26
|
||||
GET (198, 8)-(305, 15), TempVar
|
||||
PRINT " S C O R E "
|
||||
GET (198, 8)-(305, 15), Temp
|
||||
PUT (199, 9), Temp, OR
|
||||
PUT (198, 8), TempVar, OR
|
||||
END IF
|
||||
LOCATE 6,
|
||||
@ -1,2 +0,0 @@
|
||||
taken from https://github.com/cout/vbdos/blob/master/games/piles/PILES.BAS
|
||||
released into public domain by author "cout"
|
||||
@ -1,85 +0,0 @@
|
||||
@echo off
|
||||
if exist lastmake.mk call clean.bat
|
||||
if "%1"=="clean" clean.bat
|
||||
if "%1"=="clean" goto ende
|
||||
|
||||
if not x%1==x set LNG=%1
|
||||
if "%lng%"=="" set LNG=english
|
||||
|
||||
echo.
|
||||
echo Making basic utilities for build process
|
||||
echo.
|
||||
cd utils
|
||||
make -futils.mak all
|
||||
if errorlevel 1 goto ende
|
||||
cd ..
|
||||
|
||||
echo.
|
||||
echo Making STRINGS resource
|
||||
echo.
|
||||
cd strings
|
||||
if exist mkSTRLIB.Bat del mkSTRLIB.Bat >NUL
|
||||
make -fstrings.mak -DLNG=%LNG% all
|
||||
if errorlevel 1 goto ende
|
||||
if exist mkSTRLIB.Bat call mkSTRLIB.Bat
|
||||
if errorlevel 1 goto ende
|
||||
if exist mkSTRLIB.Bat del mkSTRLIB.Bat >NUL
|
||||
cd ..
|
||||
|
||||
echo.
|
||||
echo Making CRITER resource
|
||||
echo.
|
||||
cd criter
|
||||
make -fcriter.mak all
|
||||
if errorlevel 1 goto ende
|
||||
cd ..
|
||||
|
||||
echo.
|
||||
echo Making misc library
|
||||
echo.
|
||||
cd lib
|
||||
make -flib.mak all
|
||||
if errorlevel 1 goto ende
|
||||
cd ..
|
||||
|
||||
echo.
|
||||
echo Making commands library
|
||||
echo.
|
||||
cd cmd
|
||||
make -fcmd.mak all
|
||||
if errorlevel 1 goto ende
|
||||
cd ..
|
||||
|
||||
echo.
|
||||
echo Making COMMAND.COM
|
||||
echo.
|
||||
cd shell
|
||||
make -fcommand.mak all
|
||||
if errorlevel 1 goto ende
|
||||
cd ..
|
||||
|
||||
utils\mkinfres.exe infores shell\command.map shell\command.exe
|
||||
copy /b shell\command.exe + infores + criter\criter1 + criter\criter + strings\strings.dat command.com
|
||||
if not exist command.com goto ende
|
||||
|
||||
echo.
|
||||
echo Making supplemental tools
|
||||
echo.
|
||||
cd tools
|
||||
type tools.m1 >tools.mak
|
||||
..\utils\mktools.exe >>tools.mak
|
||||
type tools.m2 >>tools.mak
|
||||
make -ftools.mak all
|
||||
if errorlevel 1 goto ende
|
||||
cd ..
|
||||
|
||||
echo.
|
||||
echo Patching heap size to 6KB
|
||||
echo.
|
||||
tools\ptchsize.exe command.com +6KB
|
||||
|
||||
echo.
|
||||
echo All done. COMMAND.COM is ready for useage!
|
||||
echo.
|
||||
|
||||
:ende
|
||||
@ -1,2 +0,0 @@
|
||||
URL: ftp://ftp.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/command/0.83/com083b26s.zip
|
||||
License: GPL
|
||||
Binary file not shown.
@ -1,3 +0,0 @@
|
||||
AUTHOR: Jan Kaluza <jkaluza@redhat.com>
|
||||
URL: Created it myself
|
||||
LICENSE: public domain
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 78 B |
@ -1,2 +0,0 @@
|
||||
AUTHOR: Joerg Jenderek <joerg.jen.der.ek@gmx.net>
|
||||
LICENSE: BSD
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 154 B |
@ -1,2 +0,0 @@
|
||||
AUTHOR: Joerg Jenderek <joerg.jen.der.ek@gmx.net>
|
||||
LICENSE: BSD
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 170 B |
@ -1,2 +0,0 @@
|
||||
AUTHOR: Joerg Jenderek <joerg.jen.der.ek@gmx.net>
|
||||
LICENSE: BSD
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 150 B |
@ -1,3 +0,0 @@
|
||||
AUTHOR: Jan Kaluza <jkaluza@redhat.com>
|
||||
URL: https://github.com/miracle2k/fretsonfire/blob/master/data/win32/installer/InstallerHeader.bmp
|
||||
LICENSE: GPL
|
||||
@ -1,3 +0,0 @@
|
||||
AUTHOR: Thomas Jarosch
|
||||
URL: Created it myself
|
||||
LICENSE: public domain
|
||||
Binary file not shown.
@ -1,3 +0,0 @@
|
||||
AUTHOR: Jan Kaluza <jkaluza@redhat.com>
|
||||
URL: Created it myself
|
||||
LICENSE: public domain
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user