From: Richard Jones <rjones@redhat.com>
Date: Fri, 15 Jan 2010 12:41:34 +0000 (+0000)
Subject: hivex: Reenable checksum calculations, but don't check result.
X-Git-Tag: 1.1.0~60
X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=ce5d63efb8d5e14fb0ead1a9b819eb7fd97e5507;p=hivex.git

hivex: Reenable checksum calculations, but don't check result.
---

diff --git a/hivex/hivex.c b/hivex/hivex.c
index 36c6b0e..546ef18 100644
--- a/hivex/hivex.c
+++ b/hivex/hivex.c
@@ -283,15 +283,16 @@ hivex_open (const char *filename, int flags)
   if (h->bitmap == NULL)
     goto error;
 
-#if 0                           /* Doesn't work. */
   /* Header checksum. */
-  uint32_t *daddr = h->addr;
+  uint32_t *daddr = (uint32_t *) h->addr;
   size_t i;
   uint32_t sum = 0;
   for (i = 0; i < 0x1fc / 4; ++i) {
-    sum += le32toh (*daddr);
+    sum ^= le32toh (*daddr);
     daddr++;
   }
+
+#if 0                           /* Doesn't work. */
   if (sum != le32toh (h->hdr->csum)) {
     fprintf (stderr, "hivex: %s: bad checksum in hive header\n", filename);
     errno = EINVAL;