mirror of
https://github.com/php/php-src.git
synced 2024-11-23 01:44:06 +08:00
Avoid undefined behavior in Windows ftok(3) emulation
`.nFileIndexHigh` is a unsigned 32bit number. Casting that to `__int64` and shifting left by 32bits triggers undefined behavior if the most significant bit of `.nFileIndexHigh` is set. We could avoid that by casting to `(__uint64)`, but in that case the whole clause doesn't have an effect anymore, so we drop it altogether. Closes GH-9958.
This commit is contained in:
parent
8d65c2fee5
commit
2d94ee5f20
1
NEWS
1
NEWS
@ -8,6 +8,7 @@ PHP NEWS
|
||||
. Fixed bug GH-9918 (License information for xxHash is not included in
|
||||
README.REDIST.BINS file). (Akama Hitoshi)
|
||||
. Fixed bug GH-9650 (Can't initialize heap: [0x000001e7]). (Michael Voříšek)
|
||||
. Fixed potentially undefined behavior in Windows ftok(3) emulation. (cmb)
|
||||
|
||||
- MBString:
|
||||
. Fixed bug GH-9535 (The behavior of mb_strcut in mbstring has been changed in
|
||||
|
@ -51,7 +51,7 @@ ftok(const char *pathname, int proj_id)
|
||||
return (key_t)-1;
|
||||
}
|
||||
|
||||
ret = (key_t) ((proj_id & 0xff) << 24 | (st.st_dev & 0xff) << 16 | ((bhfi.nFileIndexLow | (__int64)bhfi.nFileIndexHigh << 32) & 0xffff));
|
||||
ret = (key_t) ((proj_id & 0xff) << 24 | (st.st_dev & 0xff) << 16 | (bhfi.nFileIndexLow & 0xffff));
|
||||
|
||||
CloseHandle(fh);
|
||||
PHP_WIN32_IOUTIL_CLEANUP_W()
|
||||
|
Loading…
Reference in New Issue
Block a user