@@ -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 ;
@@ -244,13 +248,16 @@ PHP_FUNCTION(shm_put_var)
244
248
RETURN_THROWS ();
245
249
}
246
250
251
+ shm_list_ptr = Z_SYSVSHM_P (shm_id );
252
+ if (!shm_list_ptr -> ptr ) {
253
+ RETURN_FALSE ;
254
+ }
255
+
247
256
/* setup string-variable and serialize */
248
257
PHP_VAR_SERIALIZE_INIT (var_hash );
249
258
php_var_serialize (& shm_var , arg_var , & var_hash );
250
259
PHP_VAR_SERIALIZE_DESTROY (var_hash );
251
260
252
- shm_list_ptr = Z_SYSVSHM_P (shm_id );
253
-
254
261
/* insert serialized variable into shared memory */
255
262
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
263
@@ -317,6 +324,10 @@ PHP_FUNCTION(shm_has_var)
317
324
318
325
shm_list_ptr = Z_SYSVSHM_P (shm_id );
319
326
327
+ if (!shm_list_ptr -> ptr ) {
328
+ RETURN_FALSE ;
329
+ }
330
+
320
331
RETURN_BOOL (php_check_shm_data (shm_list_ptr -> ptr , shm_key ) >= 0 );
321
332
}
322
333
/* }}} */
@@ -382,6 +393,10 @@ static zend_long php_check_shm_data(sysvshm_chunk_head *ptr, zend_long key)
382
393
zend_long pos ;
383
394
sysvshm_chunk * shm_var ;
384
395
396
+ if (!ptr ) {
397
+ return -1 ;
398
+ }
399
+
385
400
pos = ptr -> start ;
386
401
387
402
for (;;) {
@@ -409,6 +424,10 @@ static int php_remove_shm_data(sysvshm_chunk_head *ptr, zend_long shm_varpos)
409
424
sysvshm_chunk * chunk_ptr , * next_chunk_ptr ;
410
425
zend_long memcpy_len ;
411
426
427
+ if (!ptr ) {
428
+ return -1 ;
429
+ }
430
+
412
431
chunk_ptr = (sysvshm_chunk * ) ((char * ) ptr + shm_varpos );
413
432
next_chunk_ptr = (sysvshm_chunk * ) ((char * ) ptr + shm_varpos + chunk_ptr -> next );
414
433
0 commit comments