Did you try moving these two lines: SV *ka_rv = *hv_fetch((HV*)DBIc_MY_H(imp_sth), keyattrib,strlen(keyattrib), TRUE); ka_rv = newSVsv(ka_rv); /* copy to invoke FETCH magic */ to the top of the function, specifically before the perl_call_method("fetch",)
Tim. On Sun, Feb 16, 2003 at 03:21:20PM +1100, Bradley Baetz wrote: > I spent some time over the weekend looking at this, without much luck. I > have a 'fix' - make FETCH IMA_NO_TAINT_IN|IMA_NO_TAINT_OUT, in DBI.pm. > > That works arround the problem, but I'm not too sure that its a > valid fix. > > The alternate suggestion, given back in August (of just having the > dispatch method test for methods starting with fetch, rather than > testing in _set_fbav) also works, but then stuff like func isn't > tainted. > > OTOH, this is just a workarround, and there is no guarantee that it > won't break again. > > I'm not sure what Tim prefers. Both interpretations of TaintOut (ie > taint data out, vs taint everything) are probably valid, as long as > they're appropriately documented. Personally, I think that connecting to > + relying on a database whose output you don't trust is a bit silly. > Especially with TaintIn and TaintOut set, where you are going to want to > use returned data from the db in subsequent statements, which is the > problem here. TaintIn is a different story, though, which is why I > wanted these split up to start with. > > I would like to know what the change made in perl5.6.1 which fixed this > was, though - any clues? > > Thoughts? > > Bradley