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.
* PHP-5.3:
Fixed bug #63590 Fileinfo delivers ifferent results in TS and NTS under Windows
Conflicts:
NEWS
ext/fileinfo/libmagic.patch
ext/fileinfo/tests/finfo_open_error-win32.phpt
- adapt config.w32 to not to use dirent lib anymore
- prevent libmagic from opening a dir handle under win
- reimplement the dir iteration functionality with streams
- fix logic in time convertion
- force shared on windows, will fix the dirent issue later (no, it is not enough to simply remove the dep or header include)
- add myself before I forget again
on big endian machines. This fixes it by copying the memory for those processors, but this isn't ideal as
it wastes memory. Perhaps using a static cache would be better.
- remove duplicate code (like mime_content_type() compatibility function
now use the same base as finfo_file())
- make it portable (works now on windows too, belongs other OSes)
- ([20:28] <lsmith> Pierre: ok please commit)