salvage: Zero corrupted header
authorAndrew Deason <adeason@sinenomine.net>
Wed, 28 Jul 2010 17:00:37 +0000 (12:00 -0500)
committerDerrick Brashear <shadow@dementia.org>
Wed, 11 Aug 2010 04:19:33 +0000 (21:19 -0700)
In the salvager, if we read in a corrupt header (either we get a short
read or the magic is mismatched), make sure we zero out the contents,
so we don't read garbage further on.

Change-Id: Ifb4b9fc1b25d5eab470f0950a1d3bb240f75b0d3
Reviewed-on: http://gerrit.openafs.org/2527
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

src/vol/vol-salvage.c

index e273f40..f9c07c8 100644 (file)
@@ -2377,6 +2377,9 @@ SalvageHeader(register struct stuff *sp, struct InodeSummary *isp, int check,
        Log("Part of the header (%s) is corrupted; recreating\n",
            sp->description);
        recreate = 1;
+       /* header can be garbage; make sure we don't read garbage data from
+        * it below */
+       memset(&header, 0, sizeof(header));
     }
     if (sp->inodeType == VI_VOLINFO
        && header.volumeInfo.destroyMe == DESTROY_ME) {