Package: apt-move
Version: 4.2.27-3
Severity: important

I created a patch for apt-move to add sha256 support for

- the Release file
- the Packages files
- the Sources files

On a wheezy system I installed apt-move_4.2.27-3_i386.deb and just
after the installation of the deb file the patch can be applied. The
other patches in this bug must not be applied for that patch to work.

I applied the patch with:
cd /
patch -p1 < /pathtopatch/apt-move-sha256issue-20130821.diff


On my wheezy system the apt-move dependencies have the following
versions:
bc Version: 1.06.95-2
dash Version: 0.5.7-3
libapt-pkg4.12 Version: 0.9.7.2
libc6 Version: 2.13-33
libgcc1 Version: 1:4.7.1-2
libstdc++6 Version: 4.7.1-2

Please find the patch attached to this post.


sincerely yours

Mario Koppensteiner

diff -Naur 4.2.27-3_i386/usr/bin/apt-move work/usr/bin/apt-move
--- 4.2.27-3_i386/usr/bin/apt-move	2013-08-20 19:26:22.000000000 +0200
+++ work/usr/bin/apt-move	2013-08-21 01:50:08.000000000 +0200
@@ -139,6 +139,20 @@
 	exit 64
 }
 
+apt_move_sha1() {
+    while read line
+    do
+	sha1sum ${line} | cut -d" " -f 1
+    done
+}
+
+apt_move_sha256() {
+    while read line
+    do
+      sha256sum ${line} | cut -d" " -f 1
+    done
+}
+
 apt_move_stat() {
 	perl -lpe '$_ = (stat)[7];'
 }
@@ -756,8 +770,8 @@
 
 	local pf i bif
 	pf=$TMPHOME/movefiles
-	rm -f $pf-fifo1 $pf-fifo2
-	mkfifo $pf-fifo1 $pf-fifo2
+	rm -f $pf-fifo1 $pf-fifo2 $pf-fifo3 $pf-fifo4
+	mkfifo $pf-fifo1 $pf-fifo2 $pf-fifo3 $pf-fifo4
 	rm -rf $pf
 	mkdir $pf
 
@@ -789,15 +803,19 @@
 
 	if [ $GET_BINARY ]; then
 		< $pf-deb apt_move_stat > $pf-fifo1&
+	        < $pf-deb apt_move_sha256 > $pf-fifo3&
+	        < $pf-deb apt_move_sha1 > $pf-fifo4&
 		< $pf-deb xargs -r md5sum |
-			$MOVE4 $pf/deb $pf-fifo1 $pf-skip1 $pf-pkg $CONTENTS
+			$MOVE4 $pf/deb $pf-fifo1 $pf-skip1 $pf-fifo3 $pf-fifo4 $pf-pkg $CONTENTS
 		waitall
 	fi > $pf-mvdeb
 
 	if [ $GET_SOURCE ]; then
 		< $pf-dsc apt_move_stat > $pf-fifo1&
+		< $pf-dsc apt_move_sha256 > $pf-fifo3&
+		< $pf-dsc apt_move_sha1 > $pf-fifo4&
 		< $pf-dsc xargs -r md5sum |
-			$MOVE4 $pf/dsc $pf-fifo1 $pf-skip2 > $pf-dsc1
+			$MOVE4 $pf/dsc $pf-fifo1 $pf-skip2 $pf-fifo3 $pf-fifo4 > $pf-dsc1
 		waitall
 
 		sort -t _ -k 2 .apt-move/source > $pf-sdist
@@ -858,14 +876,18 @@
 	\)
 
 	< $pf-deb apt_move_stat > $pf-fifo1&
+	< $pf-deb apt_move_sha256 > $pf-fifo3&
+	< $pf-deb apt_move_sha1 > $pf-fifo4&
 	< $pf-deb xargs -r md5sum |
-		$MOVE4 $pf/deb $pf-fifo1 $pf-skip1 $pf-pkg $CONTENTS \
+		$MOVE4 $pf/deb $pf-fifo1 $pf-skip1 $pf-fifo3 $pf-fifo4 $pf-pkg $CONTENTS \
 		> $pf-mvdeb
 	waitall
 
 	< $pf-dsc apt_move_stat > $pf-fifo1&
+	< $pf-dsc apt_move_sha256 > $pf-fifo3&
+	< $pf-dsc apt_move_sha1 > $pf-fifo4&
 	< $pf-dsc xargs -r md5sum |
-		$MOVE4 $pf/dsc $pf-fifo1 $pf-skip2 > $pf-dsc1
+		$MOVE4 $pf/dsc $pf-fifo1 $pf-skip2 $pf-fifo3 $pf-fifo4 > $pf-dsc1
 	waitall
 
 	cd .apt-move
@@ -935,8 +957,8 @@
 dofsck() {
 	local pf fifos i readlink bif overawk
 	pf=$TMPHOME/dofsck
-	rm -f $pf-fifo1 $pf-fifo2
-	mkfifo $pf-fifo1 $pf-fifo2
+	rm -f $pf-fifo1 $pf-fifo2 $pf-fifo3 $pf-fifo4
+	mkfifo $pf-fifo1 $pf-fifo2 $pf-fifo3 $pf-fifo4
 	rm -rf $pf
 	mkdir $pf
 
@@ -1266,6 +1288,8 @@
                        $($cont|md5sum) $size $j/$k/$l
                printf ' %40s%.s %16d %s\n' \
                        $($cont|sha1sum) $size $j/$k/$l >&3
+               printf ' %64s%.s %16d %s\n' \
+                       $($cont|sha256sum) $size $j/$k/$l >&4
        done
 }
 
@@ -1325,7 +1349,7 @@
 		fi
 
 		cd $prev
-	done > $pf-md5sum 3> $pf-sha1sum
+	done > $pf-md5sum 3> $pf-sha1sum 4> $pf-sha256sum
 
 	[ -n "$compo" ] || return 0
 
@@ -1347,6 +1371,8 @@
 	cat $pf-md5sum
 	echo SHA1:
 	cat $pf-sha1sum
+	echo SHA256:
+	cat $pf-sha256sum
 
 	exec >&-
 
diff -Naur 4.2.27-3_i386/usr/share/apt-move/move4 work/usr/share/apt-move/move4
--- 4.2.27-3_i386/usr/share/apt-move/move4	2013-08-20 19:26:22.000000000 +0200
+++ work/usr/share/apt-move/move4	2013-08-21 01:14:45.000000000 +0200
@@ -19,6 +19,28 @@
 	return toupper(substr(s, 1, 1)) substr(s, 2)
 }
 
+function readsha256(sha256f, sha256) {
+	err = getline sha256 < sha256f
+	if (err < 0) {
+		print "getline failed on " sha256f > "/dev/stderr"
+		exit 1
+	} else if (err == 0) {
+		return -1
+	}
+	return sha256
+}
+
+function readsha1(sha1f, sha1) {
+	err = getline sha1 < sha1f
+	if (err < 0) {
+		print "getline failed on " sha1f > "/dev/stderr"
+		exit 1
+	} else if (err == 0) {
+		return -1
+	}
+	return sha1
+}
+
 function readsize(sizef, size) {
 	err = getline size < sizef
 	if (err < 0) {
@@ -34,8 +56,10 @@
 	pref = ARGV[1]
 	sizef = ARGV[2]
 	skipf = ARGV[3]
-	pkgf = ARGV[4]
-	contents = ARGV[5] == "yes"
+	sha256f = ARGV[4]
+	sha1f = ARGV[5]
+	pkgf = ARGV[6]
+	contents = ARGV[7] == "yes"
 	ARGC = 1
 
 	isbin = pref ~ /deb$/
@@ -72,7 +96,8 @@
 		pri[++i] = "Filename"
 		pri[++i] = "Size"
 		pri[++i] = "MD5sum"
-		pri[++i] = "SHA1sum"
+		pri[++i] = "SHA1"
+		pri[++i] = "SHA256"
 		pri[++i] = "Description"
 	} else {
 		pri[++i] = "Package"
@@ -90,10 +115,14 @@
 		pri[++i] = "Format"
 		pri[++i] = "Directory"
 		pri[++i] = "Files"
+		pri[++i] = "Checksums-sha1"
+		pri[++i] = "Checksums-sha256"
 	}
 	prilen = i
 
 	nextsize = readsize(sizef)
+	nextsha256 = readsha256(sha256f)
+	nextsha1 = readsha1(sha1f)
 	printf "" > skipf
 	if (isbin) {
 		printf "" > pkgf
@@ -110,6 +139,17 @@
 	nextsize = readsize(sizef)
 }
 
+{
+	sha256 = nextsha256
+	nextsha256 = readsha256(sha256f)
+}
+
+{
+	sha1 = nextsha1
+	nextsha1 = readsha1(sha1f)
+}
+
+
 isbin {
 	suffix = substr($2, length($2) - 3)
 	if (suffix == "udeb") {
@@ -147,6 +187,8 @@
 
 	tv["md5sum"] = " " $1
 	tv["size"] = " " size
+	tv["sha256"] = " " sha256
+	tv["sha1"] = " " sha1
 	if ("revision" in tv) {
 		tv["version"] = tv["version"] "-" tv["revision"]
 		delete tv["revision"]
@@ -216,6 +258,8 @@
 		files = files " " a[i]
 	}
 	tv["files"] = "\n " $1 " " size " " file tv["files"]
+	tv["checksums-sha256"] = "\n " sha256 " " size " " file tv["checksums-sha256"] 
+	tv["checksums-sha1"] = "\n " sha1 " " size " " file tv["checksums-sha1"]
 	tv["section"] = tv["section"]
 	tv["priority"] = tv["priority"]
 	tv["directory"] = tv["directory"]

Attachment: signature.asc
Description: Digital signature

Reply via email to