Stas Bekman <[EMAIL PROTECTED]> writes:

> The error comes from
>      return $filter->next->pass_brigade($bb2);
> 
> in sub handler in TestFilter::out_bbs_filebucket;
> 
> So it's some Apache filter that throws an error,

It's wierder than that- the return value is tainted somehow:



    my $status = $filter->next->pass_brigade($bb);
    Dump $status;
    return 0; # OK, but fails when you try using $status here

~>

SV = PVMG(0x354cff0) at 0x2cd76d0
  REFCNT = 1
  FLAGS = (PADBUSY,PADMY,GMG,SMG,pIOK,pPOK)
  IV = 0
  NV = 0
  PV = 0x2eaa3a0 "0"\0
  CUR = 1
  LEN = 2
  MAGIC = 0x2ed68f0
    MG_VIRTUAL = &PL_vtbl_taint
    MG_TYPE = PERL_MAGIC_taint(t)
    MG_LEN = 1


A really bad workaround is this patch:

Index: src/modules/perl/modperl_callback.c
===================================================================
RCS file: /home/cvspublic/modperl-2.0/src/modules/perl/modperl_callback.c,v
retrieving revision 1.75
diff -u -r1.75 modperl_callback.c
--- src/modules/perl/modperl_callback.c 9 Jul 2004 08:01:20 -0000       1.75
+++ src/modules/perl/modperl_callback.c 23 Sep 2004 03:27:14 -0000
@@ -107,7 +107,7 @@
         else {
             SV *status_sv = POPs;
 
-            if (SvIOK(status_sv)) {
+            if (SvIOKp(status_sv)) {
                 /* normal IV return (e.g., Apache::OK) */
                 status = SvIVX(status_sv);
             }


However I think the return value should never be marked as
tainted in the first place, so something else bad is happening
(not sure what though).
-- 
Joe Schaefer


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to