Skip to content

Commit 143c535

Browse files
committed
Code review fix
1 parent c04ebfa commit 143c535

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

ext/sysvshm/sysvshm.c

Lines changed: 21 additions & 2 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;
@@ -244,13 +248,16 @@ PHP_FUNCTION(shm_put_var)
244248
RETURN_THROWS();
245249
}
246250

251+
shm_list_ptr = Z_SYSVSHM_P(shm_id);
252+
if (!shm_list_ptr->ptr) {
253+
RETURN_FALSE;
254+
}
255+
247256
/* setup string-variable and serialize */
248257
PHP_VAR_SERIALIZE_INIT(var_hash);
249258
php_var_serialize(&shm_var, arg_var, &var_hash);
250259
PHP_VAR_SERIALIZE_DESTROY(var_hash);
251260

252-
shm_list_ptr = Z_SYSVSHM_P(shm_id);
253-
254261
/* insert serialized variable into shared memory */
255262
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);
256263

@@ -317,6 +324,10 @@ PHP_FUNCTION(shm_has_var)
317324

318325
shm_list_ptr = Z_SYSVSHM_P(shm_id);
319326

327+
if (!shm_list_ptr->ptr) {
328+
RETURN_FALSE;
329+
}
330+
320331
RETURN_BOOL(php_check_shm_data(shm_list_ptr->ptr, shm_key) >= 0);
321332
}
322333
/* }}} */
@@ -382,6 +393,10 @@ static zend_long php_check_shm_data(sysvshm_chunk_head *ptr, zend_long key)
382393
zend_long pos;
383394
sysvshm_chunk *shm_var;
384395

396+
if (!ptr) {
397+
return -1;
398+
}
399+
385400
pos = ptr->start;
386401

387402
for (;;) {
@@ -409,6 +424,10 @@ static int php_remove_shm_data(sysvshm_chunk_head *ptr, zend_long shm_varpos)
409424
sysvshm_chunk *chunk_ptr, *next_chunk_ptr;
410425
zend_long memcpy_len;
411426

427+
if (!ptr) {
428+
return -1;
429+
}
430+
412431
chunk_ptr = (sysvshm_chunk *) ((char *) ptr + shm_varpos);
413432
next_chunk_ptr = (sysvshm_chunk *) ((char *) ptr + shm_varpos + chunk_ptr->next);
414433

0 commit comments

Comments
 (0)