mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Move locks in TSRM.c to prevent races
Closes GH-8298.
This commit is contained in:
committed by
Christoph M. Becker
parent
84c18f9f04
commit
1a75269c8e
1
NEWS
1
NEWS
@@ -21,6 +21,7 @@ PHP NEWS
|
||||
. Fixed bug GH-8070 (memory leak of internal function attribute hash).
|
||||
(Tim Düsterhus)
|
||||
. Fixed bug GH-8160 (ZTS support on Alpine is broken). (Michael Voříšek)
|
||||
. Fixed potential race condition during resource ID allocation. (ryancaicse)
|
||||
|
||||
- Filter:
|
||||
. Fixed signedness confusion in php_filter_validate_domain(). (cmb)
|
||||
|
||||
@@ -288,9 +288,9 @@ TSRM_API ts_rsrc_id ts_allocate_id(ts_rsrc_id *rsrc_id, size_t size, ts_allocate
|
||||
tsrm_resource_type *_tmp;
|
||||
_tmp = (tsrm_resource_type *) realloc(resource_types_table, sizeof(tsrm_resource_type)*id_count);
|
||||
if (!_tmp) {
|
||||
tsrm_mutex_unlock(tsmm_mutex);
|
||||
TSRM_ERROR((TSRM_ERROR_LEVEL_ERROR, "Unable to allocate storage for resource"));
|
||||
*rsrc_id = 0;
|
||||
tsrm_mutex_unlock(tsmm_mutex);
|
||||
return 0;
|
||||
}
|
||||
resource_types_table = _tmp;
|
||||
@@ -331,10 +331,10 @@ TSRM_API ts_rsrc_id ts_allocate_fast_id(ts_rsrc_id *rsrc_id, size_t *offset, siz
|
||||
|
||||
size = TSRM_ALIGNED_SIZE(size);
|
||||
if (tsrm_reserved_size - tsrm_reserved_pos < size) {
|
||||
tsrm_mutex_unlock(tsmm_mutex);
|
||||
TSRM_ERROR((TSRM_ERROR_LEVEL_ERROR, "Unable to allocate space for fast resource"));
|
||||
*rsrc_id = 0;
|
||||
*offset = 0;
|
||||
tsrm_mutex_unlock(tsmm_mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -346,9 +346,9 @@ TSRM_API ts_rsrc_id ts_allocate_fast_id(ts_rsrc_id *rsrc_id, size_t *offset, siz
|
||||
tsrm_resource_type *_tmp;
|
||||
_tmp = (tsrm_resource_type *) realloc(resource_types_table, sizeof(tsrm_resource_type)*id_count);
|
||||
if (!_tmp) {
|
||||
tsrm_mutex_unlock(tsmm_mutex);
|
||||
TSRM_ERROR((TSRM_ERROR_LEVEL_ERROR, "Unable to allocate storage for resource"));
|
||||
*rsrc_id = 0;
|
||||
tsrm_mutex_unlock(tsmm_mutex);
|
||||
return 0;
|
||||
}
|
||||
resource_types_table = _tmp;
|
||||
|
||||
Reference in New Issue
Block a user