Andrei Zmievski <[EMAIL PROTECTED]> wrote: > Moriyoshi, > > I appreciate your effort here, but it seems that while this approach is > more flexible, it is also bound to have more complicated. I have decided > to apply Philip's patch for 4.3.0.
I think my patch is too complicated to be included in 4.3.0 release too, and there is still room for the discussion whether to prepare a special ini entry like "php_auth_exposure" for those variables. Moriyoshi > On Sat, 21 Dec 2002, Moriyoshi Koizumi wrote: > > Ohh, it seems we have been working on the same patch simultaneously :) > > > > Attached is my version of fix for bug #20441, which adopts a new ini entry > > "php_auth_exposure" so that administrators can selectively expose auth > > information to the clients regardless of safe_mode settings. > > > > Possible values are: > > > > - php_auth_exposure=user > > Only PHP_AUTH_USER is exposed. > > > > - php_auth_exposure=pw > > Only PHP_AUTH_PW is exposed > > > > - php_auth_exposure=user,pw > > Both PHP_AUTH_USER and PHP_AUTH_PW are exposeed > > > > Hope this helps. > > > > Moriyoshi > > > > Philip Olson <[EMAIL PROTECTED]> wrote: > > > > > > > > Attatched is a patch that essentially goes back > > > to 4.2.3 behavior except the external auth will not > > > be available with PHP in safe mode. REMOTE_USER > > > exists regardless. > > > > > > It seems some people also wanted an ini option, I don't > > > know how to do that! :) > > > > > > References for this patch: > > > http://bugs.php.net/20441 > > > http://cvs.php.net/diff.php/php4/sapi/apache/mod_php4.c?r1=1.132&r2=1.133 > > > > > > On a related note, I'm curious why PHP_AUTH_TYPE does > > > not exist, only the variable AUTH_TYPE does (for me). > > > PHP_AUTH_TYPE has been documented forever, not sure if > > > it used to exist but various parts of PHP4 source make > > > it seem like it should. > > > > > > Regards, > > > Philip Olson > > > > > > p.s. Thanks to Wez and Steph for teaching me not to fear > > > the source. > > > > > > > > > On Fri, 20 Dec 2002, Andrei Zmievski wrote: > > > > > > > Everyone, > > > > > > > > I have just released 4.3.0RC4. Despite the quote in my signature, I am > > > > determined to keep this one the very last final RC of the interminable > > > > 4.3.0 development cycle. Towards that end, I will closely monitor the > > > > CVS commits and revert any that do not satisfactorily explain what > > > > critical or showstopper bug they are fixing. I am aware that > > > > PHP_AUTH_USER issue raises certain concerns, but no one apparently could > > > > make a patch. If, however, one appears very soon, I may consider it a > > > > special one and apply it for 4.3.0. > > > > > > > > -Andrei http://www.gravitonic.com/ > > > > > > > > "The time from now until the completion > > > > of the project tends to become constant." -- Douglas Hartree > > > > > > > > -- > > > > PHP Development Mailing List <http://www.php.net/> > > > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > > > > > > > > Index: main/main.c > > =================================================================== > > RCS file: /repository/php4/main/main.c,v > > retrieving revision 1.520 > > diff -u -r1.520 main.c > > --- main/main.c 16 Dec 2002 15:43:52 -0000 1.520 > > +++ main/main.c 21 Dec 2002 06:17:30 -0000 > > @@ -112,6 +112,9 @@ > > > > static void php_build_argv(char *s, zval *track_vars_array TSRMLS_DC); > > > > +static PHP_INI_MH(OnUpdate_php_auth_exposure); > > +#define PHP_EXPOSE_AUTH_USER 0x0001 > > +#define PHP_EXPOSE_AUTH_PW 0x0002 > > > > static char *short_track_vars_names[] = { > > "_POST", > > @@ -275,6 +278,7 @@ > > STD_PHP_INI_ENTRY("output_handler", NULL, >PHP_INI_PERDIR|PHP_INI_SYSTEM, OnUpdateString, output_handler, >php_core_globals, core_globals) > > STD_PHP_INI_BOOLEAN("register_argc_argv", "1", >PHP_INI_PERDIR|PHP_INI_SYSTEM, OnUpdateBool, register_argc_argv, >php_core_globals, core_globals) > > STD_PHP_INI_BOOLEAN("register_globals", "0", >PHP_INI_PERDIR|PHP_INI_SYSTEM, OnUpdateBool, register_globals, >php_core_globals, core_globals) > > + STD_PHP_INI_ENTRY("php_auth_exposure", "none", >PHP_INI_SYSTEM, OnUpdate_php_auth_exposure, php_auth_exposure, >php_core_globals, core_globals) > > #if PHP_SAFE_MODE > > STD_PHP_INI_BOOLEAN("safe_mode", "1", >PHP_INI_SYSTEM, OnUpdateBool, safe_mode, > php_core_globals, core_globals) > > #else > > @@ -1191,6 +1195,7 @@ > > SG(request_info).argv=(char **)NULL; > > PG(connection_status) = PHP_CONNECTION_NORMAL; > > PG(during_request_startup) = 0; > > + PG(php_auth_exposure) = 0; > > > > CG(zend_lineno) = 0; > > > > @@ -1378,10 +1383,12 @@ > > } > > > > /* PHP Authentication support */ > > - if (SG(request_info).auth_user) { > > + if ((PG(php_auth_exposure) & PHP_EXPOSE_AUTH_USER) && > > + SG(request_info).auth_user) { > > php_register_variable("PHP_AUTH_USER", SG(request_info).auth_user, >array_ptr TSRMLS_CC); > > } > > - if (SG(request_info).auth_password) { > > + if ((PG(php_auth_exposure) & PHP_EXPOSE_AUTH_PW) && > > + SG(request_info).auth_password) { > > php_register_variable("PHP_AUTH_PW", SG(request_info).auth_password, >array_ptr TSRMLS_CC); > > } > > } > > @@ -1820,6 +1827,66 @@ > > } > > /* }}} */ > > #endif > > + > > +/* {{{ OnUpdate_php_auth_exposure */ > > +static PHP_INI_MH(OnUpdate_php_auth_exposure) > > +{ > > + char *comp, *p1; > > + int eos; > > + long val = 0; > > + int sp_cnt; > > + > > + comp = NULL; > > + > > + p1 = new_value; > > + eos = 0; > > + > > + do { > > + if (*p1 == '\0') { > > + eos = 1; > > + } > > + > > + if (comp == NULL) { > > + if (!eos && *p1 != ' ') { > > + comp = p1; > > + sp_cnt = 0; > > + } > > + } else { > > + if (!eos && *p1 == ' ') { > > + ++sp_cnt; > > + } else if (eos || *p1 == ',') { > > + if (comp != NULL) { > > + int comp_len = (int)(p1 - comp) - sp_cnt; > > + if (comp_len == 4 && strncasecmp(comp, "user", >comp_len) == 0) { > > + val |= PHP_EXPOSE_AUTH_USER; > > + } else if (comp_len == 2 && strncasecmp(comp, >"pw", comp_len) == 0) { > > + val |= PHP_EXPOSE_AUTH_PW; > > + } > > + comp = NULL; > > + } > > + } else { > > + sp_cnt = 0; > > + } > > + } > > + p1++; > > + } while (!eos); > > + > > + { > > + long *p; > > + char *base; > > +#ifndef ZTS > > + base = (char *) mh_arg2; > > +#else > > + base = (char *) ts_resource(*((int *) mh_arg2)); > > +#endif > > + > > + p = (long *) (base+(size_t) mh_arg1); > > + > > + *p = val; > > + } > > + return SUCCESS; > > +} > > +/* }}} */ > > > > /* > > * Local variables: > > Index: main/php_globals.h > > =================================================================== > > RCS file: /repository/php4/main/php_globals.h,v > > retrieving revision 1.86 > > diff -u -r1.86 php_globals.h > > --- main/php_globals.h 30 Nov 2002 18:36:17 -0000 1.86 > > +++ main/php_globals.h 21 Dec 2002 06:17:30 -0000 > > @@ -141,6 +141,8 @@ > > zend_bool always_populate_raw_post_data; > > > > zend_bool report_zend_debug; > > + > > + long php_auth_exposure; > > }; > > > > > > Index: sapi/apache/mod_php4.c > > =================================================================== > > RCS file: /repository/php4/sapi/apache/mod_php4.c,v > > retrieving revision 1.148 > > diff -u -r1.148 mod_php4.c > > --- sapi/apache/mod_php4.c 1 Dec 2002 03:28:21 -0000 1.148 > > +++ sapi/apache/mod_php4.c 21 Dec 2002 06:17:30 -0000 > > @@ -448,7 +448,6 @@ > > authorization = table_get(r->headers_in, "Authorization"); > > } > > if (authorization > > - && !auth_type(r) > > && !strcasecmp(getword(r->pool, &authorization, ' '), "Basic")) { > > tmp = uudecode(r->pool, authorization); > > SG(request_info).auth_user = getword_nulls_nc(r->pool, &tmp, ':'); > > > -- > > PHP Development Mailing List <http://www.php.net/> > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > -Andrei http://www.gravitonic.com/ > * My wishlist: http://www.amazon.com/exec/obidos/wishlist/2Q2DIPY7BZLSH/ * -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php