perl-modperl-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From s...@apache.org
Subject cvs commit: modperl-2.0 Changes
Date Sun, 26 Sep 2004 03:12:38 GMT
stas        2004/09/25 20:12:38

  Modified:    src/modules/perl modperl_callback.c
               .        Changes
  Log:
  if some code changes the current interpreter's tainted state to on,
  the return value from the handler callback will be tainted, and we
  fail to deal with that. So revert to coercing any return value, but
  undef (a special case for exit()). to IV, so that tainted values are
  handled correctly as well.
  
  Revision  Changes    Path
  1.77      +2 -17     modperl-2.0/src/modules/perl/modperl_callback.c
  
  Index: modperl_callback.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_callback.c,v
  retrieving revision 1.76
  retrieving revision 1.77
  diff -u -u -r1.76 -r1.77
  --- modperl_callback.c	25 Sep 2004 23:27:10 -0000	1.76
  +++ modperl_callback.c	26 Sep 2004 03:12:38 -0000	1.77
  @@ -122,28 +122,13 @@
           else {
               SV *status_sv = POPs;
   
  -            if (SvIOK(status_sv)) {
  -                /* normal IV return (e.g., Apache::OK) */
  -                status = SvIVX(status_sv);
  -            }
  -            else if (status_sv == &PL_sv_undef) {
  +            if (status_sv == &PL_sv_undef) {
                   /* ModPerl::Util::exit() and Perl_croak internally
                    * arrange to return PL_sv_undef with G_EVAL|G_SCALAR */
                   status = OK; 
               }
  -            else if (SvPOK(status_sv)) {
  -                /* PV return that ought to be treated as IV ("0") */
  -                status = SvIVx(status_sv);
  -                MP_TRACE_h(MP_FUNC,
  -                           "coercing handler %s's return value '%s' into %d",
  -                           handler->name, SvPV_nolen(status_sv), status);
  -            }
               else {
  -                /* any other return types are considered as errors */
  -                status = HTTP_INTERNAL_SERVER_ERROR;
  -                ap_log_error(APLOG_MARK, APLOG_ERR, 0, s,
  -                             "handler %s didn't return a valid return value!",
  -                             handler->name);
  +                status = SvIVx(status_sv);
               }
           }
   
  
  
  
  1.500     +6 -0      modperl-2.0/Changes
  
  Index: Changes
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/Changes,v
  retrieving revision 1.499
  retrieving revision 1.500
  diff -u -u -r1.499 -r1.500
  --- Changes	25 Sep 2004 23:27:10 -0000	1.499
  +++ Changes	26 Sep 2004 03:12:38 -0000	1.500
  @@ -12,6 +12,12 @@
   
   =item 1.99_17-dev
   
  +if some code changes the current interpreter's tainted state to on,
  +the return value from the handler callback will be tainted, and we
  +fail to deal with that. So revert to coercing any return value, but
  +undef (a special case for exit()). to IV, so that tainted values are
  +handled correctly as well. [Stas]
  +
   make sure that each handler callback starts with a pristine
   tainted-ness state, so that previous callback calls won't affect the
   consequent ones. Without this change any handler triggering eval or
  
  
  

Mime
View raw message