1
0
mirror of https://github.com/php/php-src.git synced 2026-04-05 15:12:39 +02:00
Files
archived-php-src/ext
Anatol Belski 4091e94660 Fixed bug #64769 mbstring PHPTs crash on Windows x64
The tricky business going there in oniguruma is saving a pointer
in an int variable, passing that variable into a function and making
it a pointer again. On 64bit windows casting a pointer to a 32 bit
int will truncate that pointer. This kind of things won't work on
Windows x64.

[SNIPPET]
unsigned long ul0[2], ul1, *ul2;

ul0[0] = 42uL;
ul0[0] = 24uL;

ul1 = (unsigned long)ul0;
ul2 = (unsigned long *)ul1;

/* now it's broken, accessing ul2[0] will crash. */
[/SNIPPET]

To make it portable, ULONG_PTR should be used in this case.

In oniguruma this behaviour is to see at least in the following
codepath:

ext/mbstring/oniguruma/enc/unicode.c:10938
ext/mbstring/oniguruma/st.c:308
ext/mbstring/oniguruma/enc/unicode.c:10859
2013-05-08 19:22:37 +02:00
..
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-03-27 20:00:54 +01:00
2013-04-21 11:09:18 +08:00
2013-01-01 16:37:09 +08:00
2013-02-03 10:57:31 -02:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-03-24 17:07:16 +01:00
2013-03-07 23:05:05 +01:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-03-14 14:39:47 +01:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-03-23 21:09:20 +01:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-29 12:12:34 -08:00
2013-01-01 16:37:09 +08:00
2013-04-05 23:27:34 +08:00
2013-05-04 00:06:06 +04:00
2013-03-05 17:18:13 +08:00
2013-03-21 10:58:58 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-01-01 16:37:09 +08:00
2013-04-10 20:45:28 +02:00