This simplifies the libmagic patch:
- in upstream the HAVE_STRERROR check has been removed
- in upstream library the HAVE_SIGNAL_H has been removed
- indentations syncs with the upstream library
- some irrelevant changes removed from the patch (log comment), upstream
has this correctly logged already so no need to patch the comment.
Closes GH-4298
CVE-2014-3538 was fixed upstream, but the old patch was still kept in
the PHP port. This patch causes performance regressions when PCRE JIT is
not enabled. This is fixed by applying the relevant original code from
the newer libmagic, which makes the old patch obsolete as the
CVE-2014-3538 tests still pass.
yet unfinished port to libmagic 5.28
catch with missing libmagic port pieces
regenerate data file with magic from 5.28
test magic files from 5.28
missing files
fix path
pure c99 is still not supported
move right to 5.29, yet some bugs present
more sync with orig lib
more ZMM usage
use unpatched data for now
partial revert according to bug #67705
Revert "more ZMM usage"
This reverts commit 5e3c9b851034b455942b219b18bdc49c8315c3ee.
several fixes, so it's now closer to the clean port
This fixes a bug in libmagic where a cast to 'char' is assumed to result
in sign extension to occur. However, unqualified 'char' is unsigned on
architectures such as ARM, so the cast needs to be to 'signed char'
explicitly.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
On little endian:
map->p == php_magic_database
map->magic[i] = pointer into the map
map->p == NULL
map->magic[i] = pointer to allocated memory
On big endian (ppc64, s390x, ...):
map->p != php_magic_database and map->p != NULL
map->magic[i] = pointer into a copy of the map
Trying to efree pointer in the later cause memory corruption
Thanks to dkatulek / Red Hat for the report.