iliaa Thu Jun 19 12:10:54 2003 EDT Modified files: /php4/ext/standard user_filters.c streamsfuncs.c info.c Log: Fixed possible crashes in streams code Index: php4/ext/standard/user_filters.c diff -u php4/ext/standard/user_filters.c:1.18 php4/ext/standard/user_filters.c:1.19 --- php4/ext/standard/user_filters.c:1.18 Fri Jun 13 18:25:29 2003 +++ php4/ext/standard/user_filters.c Thu Jun 19 12:10:54 2003 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: user_filters.c,v 1.18 2003/06/13 22:25:29 pollita Exp $ */ +/* $Id: user_filters.c,v 1.19 2003/06/19 16:10:54 iliaa Exp $ */ #include "php.h" #include "php_globals.h" @@ -427,6 +427,7 @@ char *filter_name; int key_flags, filter_name_len = 0; HashTable *filters_hash; + ulong num_key; if (ZEND_NUM_ARGS() != 0) { WRONG_PARAM_COUNT; @@ -438,7 +439,7 @@ if (filters_hash) { for(zend_hash_internal_pointer_reset(filters_hash); - (key_flags = zend_hash_get_current_key_ex(filters_hash, &filter_name, &filter_name_len, NULL, 0, NULL)) != HASH_KEY_NON_EXISTANT; + (key_flags = zend_hash_get_current_key_ex(filters_hash, &filter_name, &filter_name_len, &num_key, 0, NULL)) != HASH_KEY_NON_EXISTANT; zend_hash_move_forward(filters_hash)) if (key_flags == HASH_KEY_IS_STRING) add_next_index_stringl(return_value, filter_name, filter_name_len, 1); Index: php4/ext/standard/streamsfuncs.c diff -u php4/ext/standard/streamsfuncs.c:1.18 php4/ext/standard/streamsfuncs.c:1.19 --- php4/ext/standard/streamsfuncs.c:1.18 Tue Jun 17 14:38:56 2003 +++ php4/ext/standard/streamsfuncs.c Thu Jun 19 12:10:54 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streamsfuncs.c,v 1.18 2003/06/17 18:38:56 pollita Exp $ */ +/* $Id: streamsfuncs.c,v 1.19 2003/06/19 16:10:54 iliaa Exp $ */ #include "php.h" #include "php_globals.h" @@ -353,6 +353,7 @@ HashTable *stream_xport_hash; char *stream_xport; int stream_xport_len; + ulong num_key; if (ZEND_NUM_ARGS() != 0) { WRONG_PARAM_COUNT; @@ -363,7 +364,7 @@ zend_hash_internal_pointer_reset(stream_xport_hash); while (zend_hash_get_current_key_ex(stream_xport_hash, &stream_xport, &stream_xport_len, - NULL, 0, NULL) == HASH_KEY_IS_STRING) { + &num_key, 0, NULL) == HASH_KEY_IS_STRING) { add_next_index_stringl(return_value, stream_xport, stream_xport_len, 1); zend_hash_move_forward(stream_xport_hash); } @@ -380,6 +381,7 @@ HashTable *url_stream_wrappers_hash; char *stream_protocol; int key_flags, stream_protocol_len = 0; + ulong num_key; if (ZEND_NUM_ARGS() != 0) { WRONG_PARAM_COUNT; @@ -388,7 +390,7 @@ if ((url_stream_wrappers_hash = php_stream_get_url_stream_wrappers_hash())) { array_init(return_value); for(zend_hash_internal_pointer_reset(url_stream_wrappers_hash); - (key_flags = zend_hash_get_current_key_ex(url_stream_wrappers_hash, &stream_protocol, &stream_protocol_len, NULL, 0, NULL)) != HASH_KEY_NON_EXISTANT; + (key_flags = zend_hash_get_current_key_ex(url_stream_wrappers_hash, &stream_protocol, &stream_protocol_len, &num_key, 0, NULL)) != HASH_KEY_NON_EXISTANT; zend_hash_move_forward(url_stream_wrappers_hash)) { if (key_flags == HASH_KEY_IS_STRING) { add_next_index_stringl(return_value, stream_protocol, stream_protocol_len, 1); @@ -640,16 +642,17 @@ char *wkey, *okey; int wkey_len, okey_len; int ret = SUCCESS; + ulong num_key; zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(options), &pos); while (SUCCESS == zend_hash_get_current_data_ex(Z_ARRVAL_P(options), (void**)&wval, &pos)) { - if (HASH_KEY_IS_STRING == zend_hash_get_current_key_ex(Z_ARRVAL_P(options), &wkey, &wkey_len, NULL, 0, &pos) + if (HASH_KEY_IS_STRING == zend_hash_get_current_key_ex(Z_ARRVAL_P(options), &wkey, &wkey_len, &num_key, 0, &pos) && Z_TYPE_PP(wval) == IS_ARRAY) { zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(wval), &opos); while (SUCCESS == zend_hash_get_current_data_ex(Z_ARRVAL_PP(wval), (void**)&oval, &opos)) { - if (HASH_KEY_IS_STRING == zend_hash_get_current_key_ex(Z_ARRVAL_PP(wval), &okey, &okey_len, NULL, 0, &opos)) { + if (HASH_KEY_IS_STRING == zend_hash_get_current_key_ex(Z_ARRVAL_PP(wval), &okey, &okey_len, &num_key, 0, &opos)) { php_stream_context_set_option(context, wkey, okey, *oval); } zend_hash_move_forward_ex(Z_ARRVAL_PP(wval), &opos); Index: php4/ext/standard/info.c diff -u php4/ext/standard/info.c:1.237 php4/ext/standard/info.c:1.238 --- php4/ext/standard/info.c:1.237 Tue Jun 10 16:03:38 2003 +++ php4/ext/standard/info.c Thu Jun 19 12:10:54 2003 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: info.c,v 1.237 2003/06/10 20:03:38 imajes Exp $ */ +/* $Id: info.c,v 1.238 2003/06/19 16:10:54 iliaa Exp $ */ #include "php.h" #include "php_ini.h" @@ -471,10 +471,11 @@ HashTable *url_stream_wrappers_hash; char *stream_protocol, *stream_protocols_buf = NULL; int stream_protocol_len, stream_protocols_buf_len = 0; + ulong num_key; if ((url_stream_wrappers_hash = php_stream_get_url_stream_wrappers_hash())) { for (zend_hash_internal_pointer_reset(url_stream_wrappers_hash); - zend_hash_get_current_key_ex(url_stream_wrappers_hash, &stream_protocol, &stream_protocol_len, NULL, 0, NULL) == HASH_KEY_IS_STRING; + zend_hash_get_current_key_ex(url_stream_wrappers_hash, &stream_protocol, &stream_protocol_len, &num_key, 0, NULL) == HASH_KEY_IS_STRING; zend_hash_move_forward(url_stream_wrappers_hash)) { stream_protocols_buf = erealloc(stream_protocols_buf, stream_protocols_buf_len + stream_protocol_len + 2 + 1); memcpy(stream_protocols_buf + stream_protocols_buf_len, stream_protocol, stream_protocol_len);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php