1
0
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:
Niels Dossche
2024-06-28 20:14:20 +02:00
3 changed files with 32 additions and 3 deletions

3
NEWS
View File

@@ -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

View File

@@ -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;
}

View 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)