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