summaryrefslogtreecommitdiff
path: root/pkg/file/patch
diff options
context:
space:
mode:
authorMichael Forney <mforney@mforney.org>2019-12-20 15:54:11 -0800
committerMichael Forney <mforney@mforney.org>2019-12-20 23:58:34 -0800
commitf29547f5c57342132f86b7c289a6681fd76b033a (patch)
treec7bc88a1c377f5014f42c9b59b15eaa60ac2c8c9 /pkg/file/patch
parentcadf4e2bf4582b257aa4ba9fb4350990aaf2dd67 (diff)
file: Update to 5.38
Diffstat (limited to 'pkg/file/patch')
-rw-r--r--pkg/file/patch/0001-Avoid-cast-of-address-constant-to-integer-constant-i.patch108
1 files changed, 63 insertions, 45 deletions
diff --git a/pkg/file/patch/0001-Avoid-cast-of-address-constant-to-integer-constant-i.patch b/pkg/file/patch/0001-Avoid-cast-of-address-constant-to-integer-constant-i.patch
index a7b8e046..802b119f 100644
--- a/pkg/file/patch/0001-Avoid-cast-of-address-constant-to-integer-constant-i.patch
+++ b/pkg/file/patch/0001-Avoid-cast-of-address-constant-to-integer-constant-i.patch
@@ -1,18 +1,32 @@
-From a57afd937b20e0855d663854e1c1e0a9503b5b6a Mon Sep 17 00:00:00 2001
+From 349dc7a8e768c5c81e9b88131828ee168e66344a Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Mon, 17 Jun 2019 23:54:24 -0700
Subject: [PATCH] Avoid cast of address constant to integer constant in
initalizer
+Upstream: https://mailman.astron.com/pipermail/file/2019-December/000247.html
+RCAST converts an address constant to an integer, and then to pointer. An
+integer constant cast to a pointer type is a valid address constant,
+however, a pointer cast to a integer is not an integer constant:
+
+> Cast operators in an integer constant expression shall only convert
+> arithmetic types to integer types, except as part of an operand to the
+> sizeof operator.
+
+So the result of RCAST(const void *, zlibcmp) is not technically a
+constant expression, and might be rejected by some compilers when it is
+used in an initializer for an object with static storage.
+
+Instead, just use a union so no casts are necessary.
---
- src/compress.c | 38 ++++++++++++++++++++------------------
- 1 file changed, 20 insertions(+), 18 deletions(-)
+ src/compress.c | 40 +++++++++++++++++++++-------------------
+ 1 file changed, 21 insertions(+), 19 deletions(-)
diff --git a/src/compress.c b/src/compress.c
-index 95e42a24..3df6f02c 100644
+index 33ce2bc9..569c87e8 100644
--- a/src/compress.c
+++ b/src/compress.c
-@@ -146,30 +146,33 @@ static const char *zstd_args[] = {
+@@ -161,7 +161,10 @@ static const char *zstd_args[] = {
#define do_bzlib NULL
private const struct {
@@ -21,60 +35,64 @@ index 95e42a24..3df6f02c 100644
+ const void *magic;
+ int (*func)(const unsigned char *);
+ } u;
- size_t maglen;
+ int maglen;
const char **argv;
void *unused;
- } compr[] = {
-- { "\037\235", 2, gzip_args, NULL }, /* compressed */
-+ { { "\037\235" }, 2, gzip_args, NULL }, /* compressed */
+@@ -171,26 +174,26 @@ private const struct {
+ #define METH_XZ 9
+ #define METH_LZMA 13
+ #define METH_ZLIB 14
+- { "\037\235", 2, gzip_args, NULL }, /* 0, compressed */
++ { { "\037\235" }, 2, gzip_args, NULL }, /* 0, compressed */
/* Uncompress can get stuck; so use gzip first if we have it
* Idea from Damien Clark, thanks! */
-- { "\037\235", 2, uncompress_args, NULL }, /* compressed */
-- { "\037\213", 2, gzip_args, do_zlib }, /* gzipped */
-- { "\037\236", 2, gzip_args, NULL }, /* frozen */
-- { "\037\240", 2, gzip_args, NULL }, /* SCO LZH */
-+ { { "\037\235" }, 2, uncompress_args, NULL }, /* compressed */
-+ { { "\037\213" }, 2, gzip_args, do_zlib }, /* gzipped */
-+ { { "\037\236" }, 2, gzip_args, NULL }, /* frozen */
-+ { { "\037\240" }, 2, gzip_args, NULL }, /* SCO LZH */
+- { "\037\235", 2, uncompress_args, NULL }, /* 1, compressed */
+- { "\037\213", 2, gzip_args, do_zlib }, /* 2, gzipped */
+- { "\037\236", 2, gzip_args, NULL }, /* 3, frozen */
+- { "\037\240", 2, gzip_args, NULL }, /* 4, SCO LZH */
++ { { "\037\235" }, 2, uncompress_args, NULL }, /* 1, compressed */
++ { { "\037\213" }, 2, gzip_args, do_zlib }, /* 2, gzipped */
++ { { "\037\236" }, 2, gzip_args, NULL }, /* 3, frozen */
++ { { "\037\240" }, 2, gzip_args, NULL }, /* 4, SCO LZH */
/* the standard pack utilities do not accept standard input */
-- { "\037\036", 2, gzip_args, NULL }, /* packed */
-- { "PK\3\4", 4, gzip_args, NULL }, /* pkzipped, */
-+ { { "\037\036" }, 2, gzip_args, NULL }, /* packed */
-+ { { "PK\3\4" }, 4, gzip_args, NULL }, /* pkzipped, */
+- { "\037\036", 2, gzip_args, NULL }, /* 5, packed */
+- { "PK\3\4", 4, gzip_args, NULL }, /* 6, pkzipped, */
++ { { "\037\036" }, 2, gzip_args, NULL }, /* 5, packed */
++ { { "PK\3\4" }, 4, gzip_args, NULL }, /* 6, pkzipped, */
/* ...only first file examined */
-- { "BZh", 3, bzip2_args, do_bzlib }, /* bzip2-ed */
-- { "LZIP", 4, lzip_args, NULL }, /* lzip-ed */
-- { "\3757zXZ\0", 6, xz_args, NULL }, /* XZ Utils */
-- { "LRZI", 4, lrzip_args, NULL }, /* LRZIP */
-- { "\004\"M\030",4, lz4_args, NULL }, /* LZ4 */
-- { "\x28\xB5\x2F\xFD", 4, zstd_args, NULL }, /* zstd */
-+ { { "BZh" }, 3, bzip2_args, do_bzlib }, /* bzip2-ed */
-+ { { "LZIP" }, 4, lzip_args, NULL }, /* lzip-ed */
-+ { { "\3757zXZ\0" }, 6, xz_args, NULL }, /* XZ Utils */
-+ { { "LRZI" }, 4, lrzip_args, NULL }, /* LRZIP */
-+ { { "\004\"M\030" }, 4, lz4_args, NULL }, /* LZ4 */
-+ { { "\x28\xB5\x2F\xFD" }, 4, zstd_args, NULL }, /* zstd */
+- { "BZh", 3, bzip2_args, do_bzlib }, /* 7, bzip2-ed */
+- { "LZIP", 4, lzip_args, NULL }, /* 8, lzip-ed */
+- { "\3757zXZ\0", 6, xz_args, NULL }, /* 9, XZ Utils */
+- { "LRZI", 4, lrzip_args, NULL }, /* 10, LRZIP */
+- { "\004\"M\030",4, lz4_args, NULL }, /* 11, LZ4 */
+- { "\x28\xB5\x2F\xFD", 4, zstd_args, NULL }, /* 12, zstd */
+- { RCAST(const void *, lzmacmp), -13, xz_args, NULL }, /* 13, lzma */
++ { { "BZh" }, 3, bzip2_args, do_bzlib }, /* 7, bzip2-ed */
++ { { "LZIP" }, 4, lzip_args, NULL }, /* 8, lzip-ed */
++ { { "\3757zXZ\0" }, 6, xz_args, NULL }, /* 9, XZ Utils */
++ { { "LRZI" }, 4, lrzip_args, NULL }, /* 10, LRZIP */
++ { { "\004\"M\030" }, 4, lz4_args, NULL }, /* 11, LZ4 */
++ { { "\x28\xB5\x2F\xFD" }, 4, zstd_args, NULL }, /* 12, zstd */
++ { { .func = lzmacmp }, -13, xz_args, NULL }, /* 13, lzma */
#ifdef ZLIBSUPPORT
-- { RCAST(const void *, zlibcmp), 0, zlib_args, NULL }, /* zlib */
-+ { { .func = zlibcmp }, 0, zlib_args, NULL }, /* zlib */
+- { RCAST(const void *, zlibcmp), -2, zlib_args, NULL }, /* 14, zlib */
++ { { .func = zlibcmp }, -2, zlib_args, NULL }, /* 14, zlib */
#endif
};
-@@ -238,11 +241,10 @@ file_zmagic(struct magic_set *ms, const struct buffer *b, const char *name)
+@@ -262,10 +265,9 @@ file_zmagic(struct magic_set *ms, const struct buffer *b, const char *name)
+ if (nbytes < CAST(size_t, abs(compr[i].maglen)))
continue;
- #ifdef ZLIBSUPPORT
- if (compr[i].maglen == 0)
+ if (compr[i].maglen < 0) {
- zm = (RCAST(int (*)(const unsigned char *),
- CCAST(void *, compr[i].magic)))(buf);
+ zm = compr[i].u.func(buf);
- else
- #endif
-- zm = memcmp(buf, compr[i].magic, compr[i].maglen) == 0;
-+ zm = memcmp(buf, compr[i].u.magic, compr[i].maglen) == 0;
+ } else {
+- zm = memcmp(buf, compr[i].magic,
++ zm = memcmp(buf, compr[i].u.magic,
+ CAST(size_t, compr[i].maglen)) == 0;
+ }
- if (!zm)
- continue;
--
-2.20.1
+2.24.1