Taras,

    I'm trying to fix bug #163143, "ValueError: insecure string
pickle" and I found a piece of code that I don't fully understand:

        #
        # Save raw data to file
        #
        f = StringIO()
        p = Pickler(f)
        p.dump((self.request, self.response))
        with open(os.path.join(self._sessionDir, str(self.response.id)
+ self._ext), 'wb') as rrfile:
            rrfile.write(f.getvalue())
            rrfile.flush()

    Why are you doing that, instead of something like:

        f = open(os.path.join(self._sessionDir, str(self.response.id)
+ self._ext), 'wb')
        p = Pickler(f)
        p.dump( (self.request, self.response) )
        rrfile.close()

    In other words... why the StringIO? Doesn't it consume more memory
without any need? Why the flush instead of a close? I'm guessing that
the bug might be that a .trace file is being read at a point where it
hasn't been fully written to disk yet, so the close() might help (I
know flush is very similar in this case, but close() sounds better to
me, as we won't use this file anymore anyways)

    Sorry if I'm missing something big here, I haven't been around
this piece of code in a while.

[0] https://sourceforge.net/apps/trac/w3af/ticket/163143

Regards,
-- 
Andrés Riancho
Director of Web Security at Rapid7 LLC
Founder at Bonsai Information Security
Project Leader at w3af

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
W3af-develop mailing list
W3af-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/w3af-develop

Reply via email to