pollita Sat Apr 9 15:36:50 2005 EDT
Modified files:
/php-src/main/streams streams.c
Log:
Fold validation into an inlined function per Andi's suggestion
http://cvs.php.net/diff.php/php-src/main/streams/streams.c?r1=1.74&r2=1.75&ty=u
Index: php-src/main/streams/streams.c
diff -u php-src/main/streams/streams.c:1.74 php-src/main/streams/streams.c:1.75
--- php-src/main/streams/streams.c:1.74 Wed Apr 6 04:26:06 2005
+++ php-src/main/streams/streams.c Sat Apr 9 15:36:49 2005
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streams.c,v 1.74 2005/04/06 08:26:06 tony2001 Exp $ */
+/* $Id: streams.c,v 1.75 2005/04/09 19:36:49 pollita Exp $ */
#define _GNU_SOURCE
#include "php.h"
@@ -1417,10 +1417,12 @@
return SUCCESS;
}
-/* API for registering GLOBAL wrappers */
-PHPAPI int php_register_url_stream_wrapper(char *protocol, php_stream_wrapper
*wrapper TSRMLS_DC)
+/* Validate protocol scheme names during registration
+ * Must conform to /^[a-zA-Z0-9+.-]+$/
+ */
+static inline int php_stream_wrapper_scheme_validate(char *protocol, int
protocol_len)
{
- int i, protocol_len = strlen(protocol);
+ int i;
for(i = 0; i < protocol_len; i++) {
if (!isalnum((int)protocol[i]) &&
@@ -1431,6 +1433,18 @@
}
}
+ return SUCCESS;
+}
+
+/* API for registering GLOBAL wrappers */
+PHPAPI int php_register_url_stream_wrapper(char *protocol, php_stream_wrapper
*wrapper TSRMLS_DC)
+{
+ int protocol_len = strlen(protocol);
+
+ if (php_stream_wrapper_scheme_validate(protocol, protocol_len) ==
FAILURE) {
+ return FAILURE;
+ }
+
return zend_hash_add(&url_stream_wrappers_hash, protocol, protocol_len,
wrapper, sizeof(*wrapper), NULL);
}
@@ -1442,15 +1456,10 @@
/* API for registering VOLATILE wrappers */
PHPAPI int php_register_url_stream_wrapper_volatile(char *protocol,
php_stream_wrapper *wrapper TSRMLS_DC)
{
- int i, protocol_len = strlen(protocol);
+ int protocol_len = strlen(protocol);
- for(i = 0; i < protocol_len; i++) {
- if (!isalnum((int)protocol[i]) &&
- protocol[i] != '+' &&
- protocol[i] != '-' &&
- protocol[i] != '.') {
- return FAILURE;
- }
+ if (php_stream_wrapper_scheme_validate(protocol, protocol_len) ==
FAILURE) {
+ return FAILURE;
}
if (!FG(stream_wrappers)) {
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php