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

Bug#555015: pu: package libdbd-pg-perl/2.8.7-1



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: pu

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Dear release team,
  
the version of libdbd-pg-perl in Lenny (2.8.7-1) has a regression in
the handling of high bit characters. Cf.
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554489
http://rt.cpan.org/Public/Bug/Display.html?id=39390

The bug was fixed upstream and in Debian with 2.10.6[-1].
   
I propose to include a newer version of libdbd-pg-perl in the next   
Lenny point release with the patch for this problem. The change in   
the code is a 1-line-change (or even a 15-character-change :)), the  
rest are some additional tests for the fix which I've also tested in 
a Lenny chroot with and without postgresql installed.
   
Find attached a debdiff for the proposed upload to stable.
   
Please advice on how to proceed.
   
Thanks in advanve,
gregor

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAkr2DIoACgkQOzKYnQDzz+RwegCg72u0cOvmk3h1JAepoPS1u+fz
0s4AnR+F2b2RBrJZPvyXJqV6np2n5nQi
=04g7
-----END PGP SIGNATURE-----
diff -u libdbd-pg-perl-2.8.7/debian/changelog libdbd-pg-perl-2.8.7/debian/changelog
--- libdbd-pg-perl-2.8.7/debian/changelog
+++ libdbd-pg-perl-2.8.7/debian/changelog
@@ -1,3 +1,11 @@
+libdbd-pg-perl (2.8.7-1+lenny1) stable; urgency=low
+
+  * Upload to stable-proposed-updates.
+  * Add patch to fix problem with high bit characters; thanks to Bryce Nesbitt
+    for bug report, tests and the final patch (closes: #554489).
+
+ -- gregor herrmann <gregoa@debian.org>  Sun, 08 Nov 2009 00:55:30 +0100
+
 libdbd-pg-perl (2.8.7-1) unstable; urgency=low
 
   * New upstream release.
only in patch2:
unchanged:
--- libdbd-pg-perl-2.8.7.orig/quote.c
+++ libdbd-pg-perl-2.8.7/quote.c
@@ -205,7 +205,7 @@
 			*result++ = '\\';
 		}
 		else if (*string < 0x20 || *string > 0x7e) {
-			(void) snprintf((char *)result, 6, "\\\\%03o", *string++);
+			(void) snprintf((char *)result, 6, "\\\\%03o", (unsigned char)*string++);
 			result += 5;
 		}
 		else {
only in patch2:
unchanged:
--- libdbd-pg-perl-2.8.7.orig/t/06bytea.t
+++ libdbd-pg-perl-2.8.7/t/06bytea.t
@@ -17,7 +17,7 @@
 if (! defined $dbh) {
 	plan skip_all => 'Connection to database failed, cannot continue testing';
 }
-plan tests => 7;
+plan tests => 11;
 
 isnt ($dbh, undef, 'Connect to database for bytea testing');
 
@@ -28,6 +28,7 @@
 
 my ($sth, $t);
 
+#################################################################
 $sth = $dbh->prepare(q{INSERT INTO dbd_pg_test (id,bytetest) VALUES (?,?)});
 
 $t='bytea insert test with string containing null and backslashes';
@@ -40,6 +41,15 @@
 $t='bytea (second) insert test with string containing a single quote';
 ok ($sth->execute(402, '\''), $t);
 
+my ($binary_in, $binary_out);
+$t='store binary data in BYTEA column';
+for(my $i=0; $i<256; $i++) { $binary_out .= chr($i); }
+$sth->{pg_server_prepare} = 0;
+ok ($sth->execute(403, $binary_out), $t);
+$sth->{pg_server_prepare} = 1;
+ok ($sth->execute(404, $binary_out), $t);
+
+#################################################################
 $t='Received correct text from BYTEA column with backslashes';
 $sth = $dbh->prepare(q{SELECT bytetest FROM dbd_pg_test WHERE id=?});
 $sth->execute(400);
@@ -51,6 +61,16 @@
 $byte = $sth->fetchall_arrayref()->[0][0];
 is ($byte, '\'', $t);
 
+$t='compare binary data in bytea row 403';
+$sth->execute(403);
+($binary_in) = $sth->fetchrow_array();
+ok ($binary_in eq $binary_out, $t);
+$t='compare binary data in bytea row 404';
+$sth->execute(404);
+($binary_in) = $sth->fetchrow_array();
+ok ($binary_in eq $binary_out, $t);
+
+#################################################################
 $t='quote properly handles bytea strings';
 my $string = "abc\123\\def\0ghi";
 my $result = $dbh->quote($string, { pg_type => PG_BYTEA });

Reply to: