iEnsure block pointer in the index file is within limits - dedup - deduplicating backup program Err bitreich.org 70 hgit clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ URL:git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ bitreich.org 70 1Log /scm/dedup/log.gph bitreich.org 70 1Files /scm/dedup/files.gph bitreich.org 70 1Refs /scm/dedup/refs.gph bitreich.org 70 1Tags /scm/dedup/tag bitreich.org 70 1README /scm/dedup/file/README.gph bitreich.org 70 1LICENSE /scm/dedup/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit c0f3292de8c30657c13d7564a0655e65df8e0459 /scm/dedup/commit/c0f3292de8c30657c13d7564a0655e65df8e0459.gph bitreich.org 70 1parent bf3abd9cb6cf698a89cddc3fbd635cf6d6bed45c /scm/dedup/commit/bf3abd9cb6cf698a89cddc3fbd635cf6d6bed45c.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Wed, 21 Mar 2018 11:12:19 +0000 Err bitreich.org 70 i Err bitreich.org 70 iEnsure block pointer in the index file is within limits Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dedup.c | 6 ++++-- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 4 insertions(+), 2 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/dedup.c b/dedup.c /scm/dedup/file/dedup.c.gph bitreich.org 70 i@@ -267,6 +267,8 @@ extract(unsigned char *id, int fd) Err bitreich.org 70 i for (j = 0; j < ent->nblks; j++) { Err bitreich.org 70 i struct blk blk; Err bitreich.org 70 i Err bitreich.org 70 i+ if (ent->blks[j] > nblks()) Err bitreich.org 70 i+ errx(1, "index is corrupted"); Err bitreich.org 70 i read_blk(&blk, ent->blks[j]); Err bitreich.org 70 i xwrite(1, blk.data, blk.sz); Err bitreich.org 70 i } Err bitreich.org 70 i@@ -327,8 +329,8 @@ check(void) Err bitreich.org 70 i for (j = 0; j < ent->nblks; j++) { Err bitreich.org 70 i struct blk blk; Err bitreich.org 70 i Err bitreich.org 70 i- /* XXX: If there's file corruption, ent->blks[j] Err bitreich.org 70 i- * could point anywhere */ Err bitreich.org 70 i+ if (ent->blks[j] > nblks()) Err bitreich.org 70 i+ errx(1, "index is corrupted"); Err bitreich.org 70 i read_blk(&blk, ent->blks[j]); Err bitreich.org 70 i SHA256_Update(&ctx, blk.data, blk.sz); Err bitreich.org 70 i } Err bitreich.org 70 .