mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2: Fix GH-14537: shmop Windows 11 crashes the process
This commit is contained in:
3
NEWS
3
NEWS
@@ -10,7 +10,8 @@ PHP NEWS
|
||||
. Fixed bug GH-14596 (crashes with ASAN and ZEND_RC_DEBUG=1).
|
||||
(David Carlier)
|
||||
|
||||
|
||||
- Shmop:
|
||||
. Fixed bug GH-14537 (shmop Windows 11 crashes the process). (nielsdos)
|
||||
|
||||
20 Jun 2024, PHP 8.3.9
|
||||
|
||||
|
||||
@@ -709,6 +709,7 @@ TSRM_API int shmget(key_t key, size_t size, int flags)
|
||||
CloseHandle(shm->segment);
|
||||
}
|
||||
UnmapViewOfFile(shm->descriptor);
|
||||
shm->descriptor = NULL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -744,8 +745,8 @@ TSRM_API int shmdt(const void *shmaddr)
|
||||
shm->descriptor->shm_lpid = getpid();
|
||||
shm->descriptor->shm_nattch--;
|
||||
|
||||
ret = 1;
|
||||
if (!ret && shm->descriptor->shm_nattch <= 0) {
|
||||
ret = 0;
|
||||
if (shm->descriptor->shm_nattch <= 0) {
|
||||
ret = UnmapViewOfFile(shm->descriptor) ? 0 : -1;
|
||||
shm->descriptor = NULL;
|
||||
}
|
||||
|
||||
27
ext/shmop/tests/gh14537.phpt
Normal file
27
ext/shmop/tests/gh14537.phpt
Normal file
@@ -0,0 +1,27 @@
|
||||
--TEST--
|
||||
GH-14537: shmop Windows 11 crashes the process
|
||||
--EXTENSIONS--
|
||||
shmop
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (PHP_OS_FAMILY !== 'Windows') die('skip only for Windows');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$str = 'Hello World';
|
||||
|
||||
$shm_key = ftok(__FILE__, 'p');
|
||||
|
||||
$shm_id1 = shmop_open($shm_key, 'c', 0644, strlen($str));
|
||||
shmop_delete($shm_id1);
|
||||
var_dump($shm_id1);
|
||||
|
||||
$shm_id2 = shmop_open($shm_key, 'c', 0644, strlen($str) + 10);
|
||||
var_dump($shm_id2);
|
||||
?>
|
||||
--EXPECTF--
|
||||
object(Shmop)#1 (0) {
|
||||
}
|
||||
|
||||
Warning: shmop_open(): Unable to attach or create shared memory segment "No error" in %s on line %d
|
||||
bool(false)
|
||||
Reference in New Issue
Block a user