iCheck for EOF on input - 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 e11aca811109d7e85694e8fbe2773ef5b9068e19 /scm/dedup/commit/e11aca811109d7e85694e8fbe2773ef5b9068e19.gph bitreich.org 70 1parent a346481d84a075c0cc245535a251e131863445b8 /scm/dedup/commit/a346481d84a075c0cc245535a251e131863445b8.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Wed, 21 Mar 2018 09:48:50 +0000 Err bitreich.org 70 i Err bitreich.org 70 iCheck for EOF on input Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dedup.c | 20 ++++++++++++++------ Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 14 insertions(+), 6 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@@ -164,7 +164,8 @@ void Err bitreich.org 70 i read_blk(struct blk *blk, off_t blkidx) Err bitreich.org 70 i { Err bitreich.org 70 i lseek(sfd, blkidx * sizeof(*blk), SEEK_SET); Err bitreich.org 70 i- xread(sfd, blk, sizeof(*blk)); Err bitreich.org 70 i+ if (xread(sfd, blk, sizeof(*blk)) == 0) Err bitreich.org 70 i+ errx(1, "unexpected EOF"); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i@@ -256,9 +257,12 @@ extract(unsigned char *id, int fd) Err bitreich.org 70 i lseek(ifd, sizeof(enthdr), SEEK_SET); Err bitreich.org 70 i for (i = 0; i < enthdr.nents; i++) { Err bitreich.org 70 i ent = alloc_ent(); Err bitreich.org 70 i- xread(ifd, ent, sizeof(*ent)); Err bitreich.org 70 i+ if (xread(ifd, ent, sizeof(*ent)) == 0) Err bitreich.org 70 i+ errx(1, "unexpected EOF"); Err bitreich.org 70 i ent = grow_ent(ent, ent->nblks); Err bitreich.org 70 i- xread(ifd, ent->blks, ent->nblks * sizeof(ent->blks[0])); Err bitreich.org 70 i+ if (xread(ifd, ent->blks, Err bitreich.org 70 i+ ent->nblks * sizeof(ent->blks[0])) == 0) Err bitreich.org 70 i+ errx(1, "unexpected EOF"); Err bitreich.org 70 i if (memcmp(ent->md, md, sizeof(ent->md)) == 0) { Err bitreich.org 70 i uint64_t j; Err bitreich.org 70 i Err bitreich.org 70 i@@ -312,9 +316,12 @@ dump_index(void) Err bitreich.org 70 i lseek(ifd, sizeof(enthdr), SEEK_SET); Err bitreich.org 70 i for (i = 0; i < enthdr.nents; i++) { Err bitreich.org 70 i ent = alloc_ent(); Err bitreich.org 70 i- xread(ifd, ent, sizeof(*ent)); Err bitreich.org 70 i+ if (xread(ifd, ent, sizeof(*ent)) == 0) Err bitreich.org 70 i+ errx(1, "unexpected EOF"); Err bitreich.org 70 i ent = grow_ent(ent, ent->nblks); Err bitreich.org 70 i- xread(ifd, ent->blks, ent->nblks * sizeof(ent->blks[0])); Err bitreich.org 70 i+ if (xread(ifd, ent->blks, Err bitreich.org 70 i+ ent->nblks * sizeof(ent->blks[0])) == 0) Err bitreich.org 70 i+ errx(1, "unexpected EOF"); Err bitreich.org 70 i dump_ent(ent); Err bitreich.org 70 i free(ent); Err bitreich.org 70 i } Err bitreich.org 70 i@@ -329,7 +336,8 @@ list(void) Err bitreich.org 70 i for (i = 0; i < enthdr.nents; i++) { Err bitreich.org 70 i struct ent ent; Err bitreich.org 70 i Err bitreich.org 70 i- xread(ifd, &ent, sizeof(ent)); Err bitreich.org 70 i+ if (xread(ifd, &ent, sizeof(ent)) == 0) Err bitreich.org 70 i+ errx(1, "unexpected EOF"); Err bitreich.org 70 i dump_md(ent.md, sizeof(ent.md)); Err bitreich.org 70 i putchar('\n'); Err bitreich.org 70 i lseek(ifd, ent.nblks * sizeof(ent.blks[0]), SEEK_CUR); Err bitreich.org 70 .