cvs: php-src /ext/shmop shmop.c

From: Date: Sat, 30 Dec 2006 20:21:47 +0000
Subject: cvs: php-src /ext/shmop shmop.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-42487@lists.php.net to get a copy of this message
iliaa Sat Dec 30 20:21:47 2006 UTC Modified files: /php-src/ext/shmop shmop.c Log: MFB: Added missing resource type checks http://cvs.php.net/viewvc.cgi/php-src/ext/shmop/shmop.c?r1=1.36&r2=1.37&diff_format=u Index: php-src/ext/shmop/shmop.c diff -u php-src/ext/shmop/shmop.c:1.36 php-src/ext/shmop/shmop.c:1.37 --- php-src/ext/shmop/shmop.c:1.36 Sat Oct 7 22:55:18 2006 +++ php-src/ext/shmop/shmop.c Sat Dec 30 20:21:47 2006 @@ -16,7 +16,7 @@ | Ilia Alshanetsky <ilia@prohost.org> | +----------------------------------------------------------------------+ */ -/* $Id: shmop.c,v 1.36 2006/10/07 22:55:18 bjori Exp $ */ +/* $Id: shmop.c,v 1.37 2006/12/30 20:21:47 iliaa Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -78,6 +78,16 @@ ZEND_GET_MODULE(shmop) #endif +#define PHP_SHMOP_GET_RES \ + shmop = zend_list_find(shmid, &type); \ + if (!shmop) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "no shared memory segment with an id of [%lu]", shmid); \ + RETURN_FALSE; \ + } else if (type != shm_type) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "not a shmop resource"); \ + RETURN_FALSE; \ + } \ + /* {{{ rsclean */ static void rsclean(zend_rsrc_list_entry *rsrc TSRMLS_DC) @@ -219,13 +229,8 @@ return; } - shmop = zend_list_find(shmid, &type); + PHP_SHMOP_GET_RES - if (!shmop) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "no shared memory segment with an id of [%lu]", shmid); - RETURN_FALSE; - } - if (start < 0 || start > shmop->size) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "start is out of range"); RETURN_FALSE; @@ -259,12 +264,7 @@ return; } - shmop = zend_list_find(shmid, &type); - - if (!shmop) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "no shared memory segment with an id of [%lu]", shmid); - RETURN_FALSE; - } + PHP_SHMOP_GET_RES zend_list_delete(shmid); } @@ -282,12 +282,7 @@ return; } - shmop = zend_list_find(shmid, &type); - - if (!shmop) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "no shared memory segment with an id of [%lu]", shmid); - RETURN_FALSE; - } + PHP_SHMOP_GET_RES RETURN_LONG(shmop->size); } @@ -308,12 +303,7 @@ return; } - shmop = zend_list_find(shmid, &type); - - if (!shmop) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "no shared memory segment with an id of [%lu]", shmid); - RETURN_FALSE; - } + PHP_SHMOP_GET_RES if ((shmop->shmatflg & SHM_RDONLY) == SHM_RDONLY) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "trying to write to a read only segment"); @@ -344,12 +334,7 @@ return; } - shmop = zend_list_find(shmid, &type); - - if (!shmop) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "no shared memory segment with an id of [%lu]", shmid); - RETURN_FALSE; - } + PHP_SHMOP_GET_RES if (shmctl(shmop->shmid, IPC_RMID, NULL)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "can't mark segment for deletion (are you the owner?)");

« previous php.cvs (#42487) next »