URI: 
       Check for EOF on input - dedup - deduplicating backup program
  HTML git clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
   DIR LICENSE
       ---
   DIR commit e11aca811109d7e85694e8fbe2773ef5b9068e19
   DIR parent a346481d84a075c0cc245535a251e131863445b8
  HTML Author: sin <sin@2f30.org>
       Date:   Wed, 21 Mar 2018 09:48:50 +0000
       
       Check for EOF on input
       
       Diffstat:
         M dedup.c                             |      20 ++++++++++++++------
       
       1 file changed, 14 insertions(+), 6 deletions(-)
       ---
   DIR diff --git a/dedup.c b/dedup.c
       @@ -164,7 +164,8 @@ void
        read_blk(struct blk *blk, off_t blkidx)
        {
                lseek(sfd, blkidx * sizeof(*blk), SEEK_SET);
       -        xread(sfd, blk, sizeof(*blk));
       +        if (xread(sfd, blk, sizeof(*blk)) == 0)
       +                errx(1, "unexpected EOF");
        }
        
        void
       @@ -256,9 +257,12 @@ extract(unsigned char *id, int fd)
                lseek(ifd, sizeof(enthdr), SEEK_SET);
                for (i = 0; i < enthdr.nents; i++) {
                        ent = alloc_ent();
       -                xread(ifd, ent, sizeof(*ent));
       +                if (xread(ifd, ent, sizeof(*ent)) == 0)
       +                        errx(1, "unexpected EOF");
                        ent = grow_ent(ent, ent->nblks);
       -                xread(ifd, ent->blks, ent->nblks * sizeof(ent->blks[0]));
       +                if (xread(ifd, ent->blks,
       +                    ent->nblks * sizeof(ent->blks[0])) == 0)
       +                        errx(1, "unexpected EOF");
                        if (memcmp(ent->md, md, sizeof(ent->md)) == 0) {
                                uint64_t j;
        
       @@ -312,9 +316,12 @@ dump_index(void)
                lseek(ifd, sizeof(enthdr), SEEK_SET);
                for (i = 0; i < enthdr.nents; i++) {
                        ent = alloc_ent();
       -                xread(ifd, ent, sizeof(*ent));
       +                if (xread(ifd, ent, sizeof(*ent)) == 0)
       +                        errx(1, "unexpected EOF");
                        ent = grow_ent(ent, ent->nblks);
       -                xread(ifd, ent->blks, ent->nblks * sizeof(ent->blks[0]));
       +                if (xread(ifd, ent->blks,
       +                    ent->nblks * sizeof(ent->blks[0])) == 0)
       +                        errx(1, "unexpected EOF");
                        dump_ent(ent);
                        free(ent);
                }
       @@ -329,7 +336,8 @@ list(void)
                for (i = 0; i < enthdr.nents; i++) {
                        struct ent ent;
        
       -                xread(ifd, &ent, sizeof(ent));
       +                if (xread(ifd, &ent, sizeof(ent)) == 0)
       +                        errx(1, "unexpected EOF");
                        dump_md(ent.md, sizeof(ent.md));
                        putchar('\n');
                        lseek(ifd, ent.nblks * sizeof(ent.blks[0]), SEEK_CUR);