diff --git a/NEWS b/NEWS index c4fd35de806..fdf7e1a2758 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,8 @@ PHP NEWS . Fixed bug GH-17408 (Assertion failure Zend/zend_exceptions.c). (nielsdos, ilutov) . Fix may_have_extra_named_args flag for ZEND_AST_UNPACK. (nielsdos) + . Fix NULL arithmetic in System V shared memory emulation for Windows. (cmb) + - DOM: . Fixed bug GH-17500 (Segfault with requesting nodeName on nameless doctype). diff --git a/TSRM/tsrm_win32.c b/TSRM/tsrm_win32.c index da0ca7f005f..4550715d5ce 100644 --- a/TSRM/tsrm_win32.c +++ b/TSRM/tsrm_win32.c @@ -402,19 +402,21 @@ static shm_pair *shm_get(key_t key, void *addr) shm_pair *ptr; shm_pair *newptr; - for (ptr = TWG(shm); ptr < (TWG(shm) + TWG(shm_size)); ptr++) { - if (!ptr->descriptor) { - continue; + if (TWG(shm) != NULL) { + for (ptr = TWG(shm); ptr < (TWG(shm) + TWG(shm_size)); ptr++) { + if (!ptr->descriptor) { + continue; + } + if (!addr && ptr->descriptor->shm_perm.key == key) { + break; + } else if (ptr->addr == addr) { + break; + } } - if (!addr && ptr->descriptor->shm_perm.key == key) { - break; - } else if (ptr->addr == addr) { - break; - } - } - if (ptr < (TWG(shm) + TWG(shm_size))) { - return ptr; + if (ptr < (TWG(shm) + TWG(shm_size))) { + return ptr; + } } newptr = (shm_pair*)realloc((void*)TWG(shm), (TWG(shm_size)+1)*sizeof(shm_pair));