[Debian-l10n-commits] [ddtp] 02/02: Fix the importing of descriptions to verify md5.

Martijn van Oosterhout kleptog-guest at moszumanska.debian.org
Mon Dec 23 16:51:47 UTC 2013


This is an automated email from the git hooks/post-receive script.

kleptog-guest pushed a commit to branch master
in repository ddtp.

commit bb62413b584368e84c849ae1e0f6cf74001ae50e
Author: Martijn van Oosterhout <kleptog at svana.org>
Date:   Mon Dec 23 17:13:30 2013 +0100

    Fix the importing of descriptions to verify md5.
    
    Really a backstop to catch bogus data getting into the DB. In theory
    shouldn't happen but various bugs over the years have caused problems
    of this ilk.
---
 Packages2db.pl | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/Packages2db.pl b/Packages2db.pl
index 5ea6a12..a4a2a28 100755
--- a/Packages2db.pl
+++ b/Packages2db.pl
@@ -59,6 +59,7 @@ sub scan_packages_file {
 	my $prioritize;
 	my $description;
 
+	my $descr_md5;
 	my $tag;
 	my $source;
 	my $priority;
@@ -81,13 +82,12 @@ sub scan_packages_file {
 		return $old_description_id;
 	}
 
-	sub get_description_id {
-		my $description_orig= shift(@_);
+	sub get_description_id_from_md5 {
+		my $description_md5= shift(@_);
 		my $description_id;
 
-		my $md5=md5_hex($description_orig);
 		my $sth = $dbh->prepare("SELECT description_id FROM description_tb WHERE description_md5=?");
-		$sth->execute($md5);
+		$sth->execute($description_md5);
 		($description_id) = $sth->fetchrow_array;
 		return $description_id;
 	}
@@ -266,8 +266,12 @@ sub scan_packages_file {
 		if ($_=~/^$/) {
 			my $description_orig=$description;
 			my @oldtranslang;
+			undef $description_id;
 			eval {
-				$description_id=get_description_id($description_orig);
+				if (!defined($descr_md5)) {
+					$descr_md5 = md5_hex($description_orig);
+				}
+				$description_id=get_description_id_from_md5($descr_md5);
 				if ($description_id) {
 					$description_tag_id=get_description_tag_id($description_id,$distribution);
 					if ($description_tag_id) {
@@ -294,9 +298,12 @@ sub scan_packages_file {
 							push @oldtranslang,$lang;
 						}
 					}
-					my $md5=md5_hex($description_orig);
-					$dbh->do("INSERT INTO description_tb (description_md5, description, package, source, prioritize) VALUES (?,?,?,?,?);", undef, $md5,$description,$package,$source,$prioritize);
-					$description_id=get_description_id($description_orig);
+					# Can only happen if Packages file refer to md5 not in Translation-en file and we don't already know it.
+					if( $descr_md5 ne md5_hex($description_orig) ) {
+						die "  skipped package $package ($source), description doesn't match md5 ($descr_md5)";
+					}
+					$dbh->do("INSERT INTO description_tb (description_md5, description, package, source, prioritize) VALUES (?,?,?,?,?);", undef, $descr_md5,$description,$package,$source,$prioritize);
+					$description_id=get_description_id_from_md5($descr_md5);
 					$dbh->do("INSERT INTO description_tag_tb (description_id, tag, date_begin, date_end) VALUES (?,?,CURRENT_DATE,CURRENT_DATE);", undef, $description_id,$distribution);
 					print "   add new description from $package ($source) with prio $prioritize\n" ;
 				}
@@ -342,6 +349,7 @@ sub scan_packages_file {
 			$source=$1;
 			$prioritize=40;
 			$version="1";
+			undef $descr_md5;
 			$prioritize -= 1 if $package =~ /^(linux|kernel)-/i;
 			$prioritize -= 1 if $package =~ /^(linux|kernel)-source/i;
 			$prioritize -= 2 if $package =~ /^(linux|kernel)-patch/i;
@@ -420,6 +428,7 @@ sub scan_packages_file {
 		}
 		if (/^Description-md5: (.*)/) { # new item
 		        my $md5 = $1;
+		        $descr_md5 = $md5;
 		        if (defined $description_en->{$md5}) {
 		                $description = $description_en->{$md5}{'Description-en'} . "\n";
                         }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-l10n/ddtp.git



More information about the Debian-l10n-commits mailing list