iAdd truncation checks for paths - 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 02140831ff35a825f0c92f9e63945316f740737e /scm/dedup/commit/02140831ff35a825f0c92f9e63945316f740737e.gph bitreich.org 70 1parent 696c1e07ef2ef69da9050c37c346f6ec62fbeeb8 /scm/dedup/commit/696c1e07ef2ef69da9050c37c346f6ec62fbeeb8.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Fri, 26 Apr 2019 17:50:41 +0100 Err bitreich.org 70 i Err bitreich.org 70 iAdd truncation checks for paths Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dup-check.c | 19 ++++++++++++------- Err bitreich.org 70 i M dup-pack.c | 21 +++++++++++++-------- Err bitreich.org 70 i M dup-rm.c | 10 +++++++--- Err bitreich.org 70 i M dup-unpack.c | 21 +++++++++++++-------- Err bitreich.org 70 i Err bitreich.org 70 i4 files changed, 45 insertions(+), 26 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/dup-check.c b/dup-check.c /scm/dedup/file/dup-check.c.gph bitreich.org 70 i@@ -39,7 +39,8 @@ usage(void) Err bitreich.org 70 i int Err bitreich.org 70 i main(int argc, char *argv[]) Err bitreich.org 70 i { Err bitreich.org 70 i- char path[PATH_MAX]; Err bitreich.org 70 i+ char spath[PATH_MAX]; Err bitreich.org 70 i+ char bpath[PATH_MAX]; Err bitreich.org 70 i struct sctx *sctx; Err bitreich.org 70 i struct bctx *bctx; Err bitreich.org 70 i struct bparam bparam; Err bitreich.org 70 i@@ -59,13 +60,17 @@ main(int argc, char *argv[]) Err bitreich.org 70 i if (argc != 1) Err bitreich.org 70 i usage(); Err bitreich.org 70 i Err bitreich.org 70 i- snprintf(path, sizeof(path), "%s/archive/%s", repo, argv[0]); Err bitreich.org 70 i- if (sopen(path, S_READ, 0600, &sctx) < 0) Err bitreich.org 70 i- errx(1, "sopen: %s: failed", path); Err bitreich.org 70 i+ if (snprintf(spath, sizeof(spath), "%s/archive/%s", Err bitreich.org 70 i+ repo, argv[0]) >= sizeof(spath)) Err bitreich.org 70 i+ errx(1, "snprintf: %s: path too long", spath); Err bitreich.org 70 i+ if (snprintf(bpath, sizeof(bpath), "%s/storage", Err bitreich.org 70 i+ repo) >= sizeof(bpath)) Err bitreich.org 70 i+ errx(1, "snprintf: %s: path too long", bpath); Err bitreich.org 70 i Err bitreich.org 70 i- snprintf(path, sizeof(path), "%s/storage", repo); Err bitreich.org 70 i- if (bopen(path, B_READ, 0600, &bparam, &bctx) <0) Err bitreich.org 70 i- errx(1, "bopen: %s: failed", path); Err bitreich.org 70 i+ if (sopen(spath, S_READ, 0600, &sctx) < 0) Err bitreich.org 70 i+ errx(1, "sopen: %s: failed", spath); Err bitreich.org 70 i+ if (bopen(bpath, B_READ, 0600, &bparam, &bctx) <0) Err bitreich.org 70 i+ errx(1, "bopen: %s: failed", bpath); Err bitreich.org 70 i Err bitreich.org 70 i if (check(sctx, bctx) < 0) Err bitreich.org 70 i errx(1, "check: failed"); Err bitreich.org 70 1diff --git a/dup-pack.c b/dup-pack.c /scm/dedup/file/dup-pack.c.gph bitreich.org 70 i@@ -57,7 +57,8 @@ usage(void) Err bitreich.org 70 i int Err bitreich.org 70 i main(int argc, char *argv[]) Err bitreich.org 70 i { Err bitreich.org 70 i- char path[PATH_MAX]; Err bitreich.org 70 i+ char spath[PATH_MAX]; Err bitreich.org 70 i+ char bpath[PATH_MAX]; Err bitreich.org 70 i struct sctx *sctx; Err bitreich.org 70 i struct bctx *bctx; Err bitreich.org 70 i struct bparam bpar; Err bitreich.org 70 i@@ -77,13 +78,17 @@ main(int argc, char *argv[]) Err bitreich.org 70 i if (argc != 1) Err bitreich.org 70 i usage(); Err bitreich.org 70 i Err bitreich.org 70 i- snprintf(path, sizeof(path), "%s/archive/%s", repo, argv[0]); Err bitreich.org 70 i- if (screat(path, 0600, &sctx) < 0) Err bitreich.org 70 i- errx(1, "screat: %s: failed", path); Err bitreich.org 70 i- Err bitreich.org 70 i- snprintf(path, sizeof(path), "%s/storage", repo); Err bitreich.org 70 i- if (bopen(path, B_RDWR, 0600, &bpar, &bctx) <0) Err bitreich.org 70 i- errx(1, "bopen: %s: failed", path); Err bitreich.org 70 i+ if (snprintf(spath, sizeof(spath), "%s/archive/%s", Err bitreich.org 70 i+ repo, argv[0]) >= sizeof(spath)) Err bitreich.org 70 i+ errx(1, "snprintf: %s: path too long", spath); Err bitreich.org 70 i+ if (snprintf(bpath, sizeof(bpath), "%s/storage", Err bitreich.org 70 i+ repo) >= sizeof(bpath)) Err bitreich.org 70 i+ errx(1, "snprintf: %s: path too long", bpath); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (screat(spath, 0600, &sctx) < 0) Err bitreich.org 70 i+ errx(1, "screat: %s: failed", spath); Err bitreich.org 70 i+ if (bopen(bpath, B_RDWR, 0600, &bpar, &bctx) <0) Err bitreich.org 70 i+ errx(1, "bopen: %s: failed", bpath); Err bitreich.org 70 i Err bitreich.org 70 i if (pack(sctx, bctx) < 0) Err bitreich.org 70 i errx(1, "pack: failed"); Err bitreich.org 70 1diff --git a/dup-rm.c b/dup-rm.c /scm/dedup/file/dup-rm.c.gph bitreich.org 70 i@@ -61,11 +61,15 @@ main(int argc, char *argv[]) Err bitreich.org 70 i if (argc != 1) Err bitreich.org 70 i usage(); Err bitreich.org 70 i Err bitreich.org 70 i- snprintf(spath, sizeof(spath), "%s/archive/%s", repo, argv[0]); Err bitreich.org 70 i+ if (snprintf(spath, sizeof(spath), "%s/archive/%s", Err bitreich.org 70 i+ repo, argv[0]) >= sizeof(spath)) Err bitreich.org 70 i+ errx(1, "snprintf: %s: path too long", spath); Err bitreich.org 70 i+ if (snprintf(bpath, sizeof(bpath), "%s/storage", Err bitreich.org 70 i+ repo) >= sizeof(bpath)) Err bitreich.org 70 i+ errx(1, "snprintf: %s: path too long", bpath); Err bitreich.org 70 i+ Err bitreich.org 70 i if (sopen(spath, S_READ, 0600, &sctx) < 0) Err bitreich.org 70 i errx(1, "sopen: %s: failed", spath); Err bitreich.org 70 i- Err bitreich.org 70 i- snprintf(bpath, sizeof(bpath), "%s/storage", repo); Err bitreich.org 70 i if (bopen(bpath, B_RDWR, 0600, &bparam, &bctx) <0) Err bitreich.org 70 i errx(1, "bopen: %s: failed", bpath); Err bitreich.org 70 i Err bitreich.org 70 1diff --git a/dup-unpack.c b/dup-unpack.c /scm/dedup/file/dup-unpack.c.gph bitreich.org 70 i@@ -73,7 +73,8 @@ usage(void) Err bitreich.org 70 i int Err bitreich.org 70 i main(int argc, char *argv[]) Err bitreich.org 70 i { Err bitreich.org 70 i- char path[PATH_MAX]; Err bitreich.org 70 i+ char spath[PATH_MAX]; Err bitreich.org 70 i+ char bpath[PATH_MAX]; Err bitreich.org 70 i struct sctx *sctx; Err bitreich.org 70 i struct bctx *bctx; Err bitreich.org 70 i struct bparam bpar; Err bitreich.org 70 i@@ -93,13 +94,17 @@ main(int argc, char *argv[]) Err bitreich.org 70 i if (argc != 1) Err bitreich.org 70 i usage(); Err bitreich.org 70 i Err bitreich.org 70 i- snprintf(path, sizeof(path), "%s/archive/%s", repo, argv[0]); Err bitreich.org 70 i- if (sopen(path, S_READ, 0600, &sctx) < 0) Err bitreich.org 70 i- errx(1, "sopen: %s: failed", path); Err bitreich.org 70 i- Err bitreich.org 70 i- snprintf(path, sizeof(path), "%s/storage", repo); Err bitreich.org 70 i- if (bopen(path, B_READ, 0600, &bpar, &bctx) <0) Err bitreich.org 70 i- errx(1, "bopen: %s: failed", path); Err bitreich.org 70 i+ if (snprintf(spath, sizeof(spath), "%s/archive/%s", Err bitreich.org 70 i+ repo, argv[0]) >= sizeof(spath)) Err bitreich.org 70 i+ errx(1, "snprintf: %s: path too long", spath); Err bitreich.org 70 i+ if (snprintf(bpath, sizeof(bpath), "%s/storage", Err bitreich.org 70 i+ repo) >= sizeof(bpath)) Err bitreich.org 70 i+ errx(1, "snprintf: %s: path too long", bpath); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (sopen(spath, S_READ, 0600, &sctx) < 0) Err bitreich.org 70 i+ errx(1, "sopen: %s: failed", spath); Err bitreich.org 70 i+ if (bopen(bpath, B_READ, 0600, &bpar, &bctx) <0) Err bitreich.org 70 i+ errx(1, "bopen: %s: failed", bpath); Err bitreich.org 70 i Err bitreich.org 70 i if (unpack(sctx, bctx) < 0) Err bitreich.org 70 i errx(1, "dedup: failed"); Err bitreich.org 70 .