Adam Heath vor 25 Jahren
Ursprung
Commit
e5ac8a8ab9
3 geänderte Dateien mit 10 neuen und 10 gelöschten Zeilen
  1. 4 0
      ChangeLog
  2. 1 0
      debian/changelog
  3. 5 10
      utils/md5sum.c

+ 4 - 0
ChangeLog

@@ -1,3 +1,7 @@
+Sat Apr 28 16:17:58 CDT 2001 Adam Heath <doogie@debian.org>
+
+  * utils/md5sum.c, debian/changelog: Fix md5sum -c.
+
 Sat Apr 28 15:22:25 CDT 2001 Adam Heath <doogie@debian.org>
 
   * lib/nfmalloc.c: in nfstrnsave, don't set the char after the end, but

+ 1 - 0
debian/changelog

@@ -13,6 +13,7 @@ dpkg (1.9.1) unstable; urgency=low
   * dpkg-buildpackage should only check for valid signinterface if the
     user specifies one. Closes: Bug#95598
   * Fix removing of diversions.  Closes: Bug#95655
+  * Fix md5sum -c. Closes: Bug#95586
 
  -- Wichert Akkerman <wakkerma@debian.org>  UNRELEASED
 

+ 5 - 10
utils/md5sum.c

@@ -200,19 +200,14 @@ int
 get_md5_line(FILE *fp, unsigned char *digest, char *file)
 {
 	char buf[1024];
-	int i, d1, d2, rc;
+	int i, rc;
 	char *p = buf;
 
 	if (fgets(buf, sizeof(buf), fp) == NULL)
 		return -1;
 
-	for (i = 0; i < 16; ++i) {
-		if ((d1 = hex_digit(*p++)) == -1)
-			return 0;
-		if ((d2 = hex_digit(*p++)) == -1)
-			return 0;
-		*digest++ = d1*16 + d2;
-	}
+	memcpy(digest, p, 32);
+	p += 32;
 	if (*p++ != ' ')
 		return 0;
 	/*
@@ -240,7 +235,7 @@ int
 do_check(FILE *chkf)
 {
 	int rc, ex = 0, failed = 0, checked = 0;
-	unsigned char chk_digest[16], *file_digest = NULL;
+	unsigned char chk_digest[32], *file_digest = NULL;
 	char filename[256];
 	FILE *fp;
 	size_t flen = 14;
@@ -269,7 +264,7 @@ do_check(FILE *chkf)
 			continue;
 		}
 		fclose(fp);
-		if (memcmp(chk_digest, file_digest, 16) != 0) {
+		if (memcmp(chk_digest, file_digest, 32) != 0) {
 			if (verbose)
 				fprintf(stderr, _("FAILED\n"));
 			else