@@ -217,6 +217,10 @@ PHP_FUNCTION(shm_remove)
217
217
218
218
shm_list_ptr = Z_SYSVSHM_P (shm_id );
219
219
220
+ if (!shm_list_ptr -> ptr ) {
221
+ RETURN_TRUE ;
222
+ }
223
+
220
224
if (shmctl (shm_list_ptr -> id , IPC_RMID , NULL ) < 0 ) {
221
225
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 ));
222
226
RETURN_FALSE ;
@@ -251,6 +255,11 @@ PHP_FUNCTION(shm_put_var)
251
255
252
256
shm_list_ptr = Z_SYSVSHM_P (shm_id );
253
257
258
+ if (!shm_list_ptr -> ptr ) {
259
+ smart_str_free (& shm_var );
260
+ RETURN_FALSE ;
261
+ }
262
+
254
263
/* insert serialized variable into shared memory */
255
264
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 );
256
265
@@ -317,6 +326,10 @@ PHP_FUNCTION(shm_has_var)
317
326
318
327
shm_list_ptr = Z_SYSVSHM_P (shm_id );
319
328
329
+ if (!shm_list_ptr -> ptr ) {
330
+ RETURN_FALSE ;
331
+ }
332
+
320
333
RETURN_BOOL (php_check_shm_data (shm_list_ptr -> ptr , shm_key ) >= 0 );
321
334
}
322
335
/* }}} */
@@ -382,6 +395,10 @@ static zend_long php_check_shm_data(sysvshm_chunk_head *ptr, zend_long key)
382
395
zend_long pos ;
383
396
sysvshm_chunk * shm_var ;
384
397
398
+ if (!ptr ) {
399
+ return -1 ;
400
+ }
401
+
385
402
pos = ptr -> start ;
386
403
387
404
for (;;) {
@@ -409,6 +426,10 @@ static int php_remove_shm_data(sysvshm_chunk_head *ptr, zend_long shm_varpos)
409
426
sysvshm_chunk * chunk_ptr , * next_chunk_ptr ;
410
427
zend_long memcpy_len ;
411
428
429
+ if (!ptr ) {
430
+ return -1 ;
431
+ }
432
+
412
433
chunk_ptr = (sysvshm_chunk * ) ((char * ) ptr + shm_varpos );
413
434
next_chunk_ptr = (sysvshm_chunk * ) ((char * ) ptr + shm_varpos + chunk_ptr -> next );
414
435
0 commit comments