diff --git a/repair/phase6.c b/repair/phase6.c index 105bce4..ed44e1b 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -2326,12 +2326,15 @@ longform_dir2_entry_check(xfs_mount_t *mp, db = xfs_dir2_da_to_db(mp, da_bno); if (db >= num_bps) { /* more data blocks than expected */ + int num_bps_prev = num_bps; num_bps = db + 1; bplist = realloc(bplist, num_bps * sizeof(struct xfs_buf*)); if (!bplist) do_error(_("realloc failed in %s (%zu bytes)\n"), __func__, num_bps * sizeof(struct xfs_buf*)); + /* clear new memory as previous bplist was calloc'ed */ + memset( (void *) bplist + num_bps_prev * sizeof(struct xfs_buf*), 0, (num_bps - num_bps_prev) * sizeof(struct xfs_buf*)); } if (isblock)