cvs: php-src /ext/shmop shmop.c
| From: | Ilia Alshanetsky | 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?)");