summaryrefslogtreecommitdiff
path: root/TSRM
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2016-08-18 14:41:08 +0200
committerAnatol Belski <ab@php.net>2016-08-18 14:41:08 +0200
commit634b382e47dc53134a519b6a47c07e5c2f1f15cc (patch)
treed6a5c977accdc0f07b81d15a5b54fc9008149268 /TSRM
parent4fa7e875be3159a03d1b6cd5ed049a24794614b7 (diff)
parentb81a073b856b6f12025013361e2567a82f9b99d0 (diff)
downloadphp-git-634b382e47dc53134a519b6a47c07e5c2f1f15cc.tar.gz
Merge branch 'PHP-7.1'
* PHP-7.1: Fixed bug #72858 shm_attach null dereference
Diffstat (limited to 'TSRM')
-rw-r--r--TSRM/tsrm_win32.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/TSRM/tsrm_win32.c b/TSRM/tsrm_win32.c
index af96823f0c..958ff80ac3 100644
--- a/TSRM/tsrm_win32.c
+++ b/TSRM/tsrm_win32.c
@@ -716,6 +716,7 @@ TSRM_API int shmget(int key, int size, int flags)
TSRM_API void *shmat(int key, const void *shmaddr, int flags)
{
shm_pair *shm = shm_get(key, NULL);
+ int err;
if (!shm->segment) {
return (void*)-1;
@@ -727,6 +728,15 @@ TSRM_API void *shmat(int key, const void *shmaddr, int flags)
shm->addr = MapViewOfFileEx(shm->segment, FILE_MAP_ALL_ACCESS, 0, 0, 0, NULL);
+ err = GetLastError();
+ if (err) {
+ /* Catch more errors */
+ if (ERROR_NOT_ENOUGH_MEMORY == err) {
+ _set_errno(ENOMEM);
+ }
+ return (void*)-1;
+ }
+
return shm->addr;
}