diff options
author | 2003-07-04 17:23:15 +0000 | |
---|---|---|
committer | 2003-07-04 17:23:15 +0000 | |
commit | f96716aa47212d346e2743b85987e87d02aefec7 (patch) | |
tree | e5864aba6c17ef7a63082db84b224b6cc36ea10f | |
parent | knf typo (diff) | |
download | wireguard-openbsd-f96716aa47212d346e2743b85987e87d02aefec7.tar.xz wireguard-openbsd-f96716aa47212d346e2743b85987e87d02aefec7.zip |
- use sizeof(var) instead of hardcoding length in functions that need it
- krw@ rewrote make_preserve_name() to get rid of some hard to read string code
- some trivial strn{cpy,cat} - > strl{cpy,cat} conversions
ok krw@
-rw-r--r-- | usr.sbin/pkg_install/add/extract.c | 6 | ||||
-rw-r--r-- | usr.sbin/pkg_install/info/perform.c | 14 | ||||
-rw-r--r-- | usr.sbin/pkg_install/lib/file.c | 78 |
3 files changed, 47 insertions, 51 deletions
diff --git a/usr.sbin/pkg_install/add/extract.c b/usr.sbin/pkg_install/add/extract.c index cf6ee05f37b..facbc60529d 100644 --- a/usr.sbin/pkg_install/add/extract.c +++ b/usr.sbin/pkg_install/add/extract.c @@ -1,7 +1,7 @@ -/* $OpenBSD: extract.c,v 1.14 2003/04/05 18:04:00 avsm Exp $ */ +/* $OpenBSD: extract.c,v 1.15 2003/07/04 17:23:15 avsm Exp $ */ #ifndef lint -static const char *rcsid = "$OpenBSD: extract.c,v 1.14 2003/04/05 18:04:00 avsm Exp $"; +static const char *rcsid = "$OpenBSD: extract.c,v 1.15 2003/07/04 17:23:15 avsm Exp $"; #endif /* @@ -61,7 +61,7 @@ rollback(char *name, char *home, plist_t *start, plist_t *stop) for (q = start; q != stop; q = q->next) { if (q->type == PLIST_FILE) { snprintf(try, sizeof(try), "%s/%s", dir, q->name); - if (make_preserve_name(bup, FILENAME_MAX, name, try) && fexists(bup)) { + if (make_preserve_name(bup, sizeof(bup), name, try) && fexists(bup)) { (void)chflags(try, 0); (void)unlink(try); if (rename(bup, try)) diff --git a/usr.sbin/pkg_install/info/perform.c b/usr.sbin/pkg_install/info/perform.c index 370a63bb8af..99fa6744ee0 100644 --- a/usr.sbin/pkg_install/info/perform.c +++ b/usr.sbin/pkg_install/info/perform.c @@ -1,7 +1,7 @@ -/* $OpenBSD: perform.c,v 1.12 2003/04/04 08:56:01 avsm Exp $ */ +/* $OpenBSD: perform.c,v 1.13 2003/07/04 17:23:15 avsm Exp $ */ #ifndef lint -static const char *rcsid = "$OpenBSD: perform.c,v 1.12 2003/04/04 08:56:01 avsm Exp $"; +static const char *rcsid = "$OpenBSD: perform.c,v 1.13 2003/07/04 17:23:15 avsm Exp $"; #endif /* This is OpenBSD pkg_install, based on: @@ -90,25 +90,25 @@ pkg_do(char *pkg) } else if (fexists(pkg) && isfile(pkg)) { if (*pkg != '/') { - if (!getcwd(fname, FILENAME_MAX)) { + if (!getcwd(fname, sizeof(fname))) { cleanup(0); err(1, "fatal error during execution: getcwd"); } len = strlen(fname); - snprintf(&fname[len], FILENAME_MAX - len, "/%s", pkg); + snprintf(&fname[len], sizeof(fname) - len, "/%s", pkg); } else strlcpy(fname, pkg, sizeof(fname)); cp = fname; } else { if ((cp = fileFindByPath(NULL, pkg)) != NULL) { - strncpy(fname, cp, FILENAME_MAX); + strlcpy(fname, cp, sizeof(fname)); if (*cp != '/') { - if (!getcwd(fname, FILENAME_MAX)) { + if (!getcwd(fname, sizeof(fname))) { cleanup(0); err(1, "fatal error during execution: getcwd"); } len = strlen(fname); - snprintf(&fname[len], FILENAME_MAX - len, "/%s", cp); + snprintf(&fname[len], sizeof(fname) - len, "/%s", cp); } } } diff --git a/usr.sbin/pkg_install/lib/file.c b/usr.sbin/pkg_install/lib/file.c index b752c0419ad..b1d0d541322 100644 --- a/usr.sbin/pkg_install/lib/file.c +++ b/usr.sbin/pkg_install/lib/file.c @@ -1,7 +1,7 @@ -/* $OpenBSD: file.c,v 1.20 2003/06/01 15:53:43 deraadt Exp $ */ +/* $OpenBSD: file.c,v 1.21 2003/07/04 17:23:16 avsm Exp $ */ #ifndef lint -static const char *rcsid = "$OpenBSD: file.c,v 1.20 2003/06/01 15:53:43 deraadt Exp $"; +static const char *rcsid = "$OpenBSD: file.c,v 1.21 2003/07/04 17:23:16 avsm Exp $"; #endif /* @@ -54,7 +54,7 @@ ensure_tgz(char *name) strcmp(name+len-strlen(".tar"), ".tar") == 0)) return name; else { - snprintf(buffer, sizeof buffer, "%s%s", name, TGZ); + snprintf(buffer, sizeof(buffer), "%s%s", name, TGZ); return buffer; } } @@ -289,33 +289,32 @@ fileGetURL(char *base, char *spec) to construct a composite one out of that and the basename we were handed as a dependency. */ if (base) { - strlcpy(fname, base, sizeof fname); + strlcpy(fname, base, sizeof(fname)); /* OpenBSD packages are currently stored in a flat space, so we don't yet need to backup the category and switch to all. */ cp = strrchr(fname, '/'); if (cp) { *(cp + 1) = '\0'; - strlcat(cp, ensure_tgz(spec), sizeof fname); + strlcat(cp, ensure_tgz(spec), sizeof(fname)); } else return NULL; } else { /* Otherwise, we've been given an environment variable hinting at the right location from sysinstall */ - strlcpy(fname, hint, sizeof fname); - strlcat(fname, spec, sizeof fname); + snprintf(fname, sizeof(fname), "%s%s", hint, spec); } } else - strlcpy(fname, spec, sizeof fname); - cp = fileURLHost(fname, host, MAXHOSTNAMELEN); + strlcpy(fname, spec, sizeof(fname)); + cp = fileURLHost(fname, host, sizeof(host)); if (!*cp) { pwarnx("URL `%s' has bad host part!", fname); return NULL; } - cp = fileURLFilename(fname, file, FILENAME_MAX); + cp = fileURLFilename(fname, file, sizeof(fname)); if (!*cp) { pwarnx("URL `%s' has bad filename part!", fname); return NULL; @@ -369,7 +368,7 @@ fileFindByPath(char *base, char *fname) return tmp; } } else { - strlcpy(tmp, ensure_tgz(fname), sizeof tmp); + strlcpy(tmp, ensure_tgz(fname), sizeof(tmp)); if (fexists(tmp) && isfile(tmp)) { return tmp; } @@ -381,7 +380,7 @@ fileFindByPath(char *base, char *fname) cp = strrchr(tmp, '/'); if (cp) { *(cp + 1) = '\0'; - strlcat(tmp, ensure_tgz(fname), sizeof tmp); + strlcat(tmp, ensure_tgz(fname), sizeof(tmp)); if (ispkgpattern(tmp)) { cp=findbestmatchingname(dirname_of(tmp), basename_of(tmp)); @@ -405,7 +404,7 @@ fileFindByPath(char *base, char *fname) while (cp) { char *cp2 = strsep(&cp, ":"); - snprintf(tmp, FILENAME_MAX, "%s/%s", cp2 ? cp2 : cp, + snprintf(tmp, sizeof(tmp), "%s/%s", cp2 ? cp2 : cp, ensure_tgz(fname)); if (ispkgpattern(tmp)) { char *s; @@ -461,31 +460,28 @@ fileGetContents(char *fname) Boolean make_preserve_name(char *try, size_t max, char *name, char *file) { - int len, i; + char *p; + int i; - if ((len = strlen(file)) == 0) + i = strlcpy(try, file, max); + if (i == 0 || i >= max) return FALSE; + + /* Catch trailing slash early */ + i--; + if (try[i] == '/') + try[i] = '\0'; + + p = strrchr(try, '/'); + if (p == NULL) + p = try; else - i = len - 1; - strncpy(try, file, max); - if (try[i] == '/') /* Catch trailing slash early and save checking in the loop */ - --i; - for (; i; i--) { - if (try[i] == '/') { - try[i + 1]= '.'; - strncpy(&try[i + 2], &file[i + 1], max - i - 2); - break; - } - } - if (!i) { - try[0] = '.'; - strncpy(try + 1, file, max - 1); - } - /* I should probably be called rude names for these inline assignments */ - strncat(try, ".", max -= strlen(try)); - strncat(try, name, max -= strlen(name)); - strncat(try, ".", max--); - strncat(try, "backup", max -= 6); + p++; + + i = p - try; + if (snprintf(p, max - i, ".%s.%s.backup", file + i, name) >= (max - i)) + return FALSE; + return TRUE; } @@ -518,9 +514,9 @@ copy_file(char *dir, char *fname, char *to) char cmd[FILENAME_MAX]; if (fname[0] == '/') - snprintf(cmd, FILENAME_MAX, "cp -p -r %s %s", fname, to); + snprintf(cmd, sizeof(cmd), "cp -p -r %s %s", fname, to); else - snprintf(cmd, FILENAME_MAX, "cp -p -r %s/%s %s", dir, fname, to); + snprintf(cmd, sizeof(cmd), "cp -p -r %s/%s %s", dir, fname, to); if (vsystem("%s", cmd)) { cleanup(0); errx(2, "could not perform '%s'", cmd); @@ -533,9 +529,9 @@ move_file(char *dir, char *fname, char *to) char cmd[FILENAME_MAX]; if (fname[0] == '/') - snprintf(cmd, FILENAME_MAX, "mv %s %s", fname, to); + snprintf(cmd, sizeof(cmd), "mv %s %s", fname, to); else - snprintf(cmd, FILENAME_MAX, "mv %s/%s %s", dir, fname, to); + snprintf(cmd, sizeof(cmd), "mv %s/%s %s", dir, fname, to); if (vsystem("%s", cmd)) { cleanup(0); errx(2, "could not perform '%s'", cmd); @@ -559,11 +555,11 @@ copy_hierarchy(char *dir, char *fname, Boolean to) /* If absolute path, use it */ if (*fname == '/') dir = "/"; - snprintf(cmd, FILENAME_MAX * 3, "tar cf - -C %s %s | tar xpf -", + snprintf(cmd, sizeof(cmd), "tar cf - -C %s %s | tar xpf -", dir, fname); } else - snprintf(cmd, FILENAME_MAX * 3, "tar cf - %s | tar xpf - -C %s", + snprintf(cmd, sizeof(cmd), "tar cf - %s | tar xpf - -C %s", fname, dir); #ifdef DEBUG printf("Using '%s' to copy trees.\n", cmd); |