[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Patch for libdbi-perl dataloss problem into stable-proposed-updates?



Hello stable release team

May I upload libdbi-perl_1.53-1etch1 to "stable-proposed-updates"?

It contains a backported 2-line patch for a "potential" dataloss
problem (confirmed in the changelog of 1.57) which turned out to be a 
real problem as written by a user in the below quoted mail. I applied
only the second part of the below patch as suggested by the DBI author.

bye,

-christian-




On 2007-06-19 Tim Bunce wrote:
> Looks fine, though the DBI.xs change (assert) isn't needed and isn't in
> the DBI code.
> 
> Tim.
> 
> On Tue, Jun 19, 2007 at 12:43:53AM +0200, Christian Hammers wrote:
> > Hello
> > 
> > As reported in the Debian bug tracking system. Can you comment if this
> > patch is OK?
> > 
> > bye,
> > 
> > -christian-
> > 
> > 
> > 
> > 	From: Tim Cutts <tjrc@sanger.ac.uk>
> > 	To: ch@debian.org
> > 	Subject: libdbi-perl 1.55
> > 	Date: Mon, 14 May 2007 11:48:26 +0100
> > 	X-Mailer: Apple Mail (2.752.2)
> > 
> > Hi Christian,
> > 
> > One of the changes introduced in DBI 1.55 is a very small fix which  
> > fixes a bug which can really cause data loss (a problem with  
> > selectall_arrayref).  The bug was spotted by one of my colleagues  
> > here (Rob Davies, whom Tim Bunce credits in the changelog).  We have  
> > actually seen it cause real data loss here, so it's not just a  
> > theoretical problem.
> > 
> > What I was wondering was whether there is any way we can get that fix  
> > into Debian on etch's next point release?  The patch to fix that  
> > particular issue is as follows:
> > 
> >   diff -Naur DBI-1.54/DBI.xs DBI-1.54.patched/DBI.xs
> > --- DBI-1.54/DBI.xs	2007-02-22 01:36:15.000000000 +0000
> > +++ DBI-1.54.patched/DBI.xs	2007-04-26 09:38:00.667000000 +0100
> > @@ -9,7 +9,7 @@
> > 
> >   #define IN_DBI_XS 1	/* see DBIXS.h */
> >   #define PERL_NO_GET_CONTEXT
> > -
> > +#include <assert.h>
> >   #include "DBIXS.h"	/* DBI public interface for DBD's written in
> > C */
> > 
> >   # if (defined(_WIN32) && (! defined(HAS_GETTIMEOFDAY)))
> > @@ -3104,6 +3104,9 @@
> >   	    outitems = perl_call_sv(isGV(imp_msv) ?
> > (SV*)GvCV(imp_msv) : imp_msv,
> >   		(is_DESTROY ? gimme | G_EVAL | G_KEEPERR : gimme) );
> >   	}
> > +
> > +	assert(outitems >= 0);
> > +
> >   	SPAGAIN;
> > 
> >   	/* XXX restore local vars so ST(n) works below	*/
> > diff -Naur DBI-1.54/Driver.xst DBI-1.54.patched/Driver.xst
> > --- DBI-1.54/Driver.xst	2007-02-22 01:36:15.000000000 +0000
> > +++ DBI-1.54.patched/Driver.xst	2007-04-26 15:15:47.084000000
> > +0100 @@ -121,6 +121,7 @@
> >       }
> >       else {
> >   	sth = dbixst_bounce_method("prepare", 3);
> > +        SPAGAIN; SP -= items; /* because stack might have been
> > realloc'd */ if (!SvROK(sth))
> >   	    XSRETURN_UNDEF;
> >       }
> > @@ -157,6 +158,7 @@
> >       else {
> >   	/* --- prepare --- */
> >   	sth = dbixst_bounce_method("prepare", 3);
> > +        SPAGAIN; SP -= items; /* because stack might have been
> > realloc'd */ if (!SvROK(sth)) {
> >   	    if (is_selectrow_array) { XSRETURN_EMPTY; } else
> > { XSRETURN_UNDEF; } }

Attachment: signature.asc
Description: PGP signature


Reply to: