diff options
| author | Michael Forney <mforney@mforney.org> | 2019-12-20 15:54:11 -0800 |
|---|---|---|
| committer | Michael Forney <mforney@mforney.org> | 2019-12-20 23:58:34 -0800 |
| commit | f29547f5c57342132f86b7c289a6681fd76b033a (patch) | |
| tree | c7bc88a1c377f5014f42c9b59b15eaa60ac2c8c9 /pkg/file/patch | |
| parent | cadf4e2bf4582b257aa4ba9fb4350990aaf2dd67 (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.patch | 108 |
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 |
