Skip to content

Commit f0c4085

Browse files
committed
Code review fix
1 parent c04ebfa commit f0c4085

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

ext/sysvshm/sysvshm.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,10 @@ PHP_FUNCTION(shm_remove)
217217

218218
shm_list_ptr = Z_SYSVSHM_P(shm_id);
219219

220+
if (!shm_list_ptr->ptr) {
221+
RETURN_TRUE;
222+
}
223+
220224
if (shmctl(shm_list_ptr->id, IPC_RMID, NULL) < 0) {
221225
php_error_docref(NULL, E_WARNING, "Failed for key 0x%x, id " ZEND_LONG_FMT ": %s", shm_list_ptr->key, Z_LVAL_P(shm_id), strerror(errno));
222226
RETURN_FALSE;
@@ -251,6 +255,11 @@ PHP_FUNCTION(shm_put_var)
251255

252256
shm_list_ptr = Z_SYSVSHM_P(shm_id);
253257

258+
if (!shm_list_ptr->ptr) {
259+
smart_str_free(&shm_var);
260+
RETURN_FALSE;
261+
}
262+
254263
/* insert serialized variable into shared memory */
255264
ret = php_put_shm_data(shm_list_ptr->ptr, shm_key, shm_var.s? ZSTR_VAL(shm_var.s) : NULL, shm_var.s? ZSTR_LEN(shm_var.s) : 0);
256265

@@ -317,6 +326,10 @@ PHP_FUNCTION(shm_has_var)
317326

318327
shm_list_ptr = Z_SYSVSHM_P(shm_id);
319328

329+
if (!shm_list_ptr->ptr) {
330+
RETURN_FALSE;
331+
}
332+
320333
RETURN_BOOL(php_check_shm_data(shm_list_ptr->ptr, shm_key) >= 0);
321334
}
322335
/* }}} */
@@ -382,6 +395,10 @@ static zend_long php_check_shm_data(sysvshm_chunk_head *ptr, zend_long key)
382395
zend_long pos;
383396
sysvshm_chunk *shm_var;
384397

398+
if (!ptr) {
399+
return -1;
400+
}
401+
385402
pos = ptr->start;
386403

387404
for (;;) {
@@ -409,6 +426,10 @@ static int php_remove_shm_data(sysvshm_chunk_head *ptr, zend_long shm_varpos)
409426
sysvshm_chunk *chunk_ptr, *next_chunk_ptr;
410427
zend_long memcpy_len;
411428

429+
if (!ptr) {
430+
return -1;
431+
}
432+
412433
chunk_ptr = (sysvshm_chunk *) ((char *) ptr + shm_varpos);
413434
next_chunk_ptr = (sysvshm_chunk *) ((char *) ptr + shm_varpos + chunk_ptr->next);
414435

0 commit comments

Comments
 (0)