summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoravsm <avsm@openbsd.org>2003-07-04 17:23:15 +0000
committeravsm <avsm@openbsd.org>2003-07-04 17:23:15 +0000
commitf96716aa47212d346e2743b85987e87d02aefec7 (patch)
treee5864aba6c17ef7a63082db84b224b6cc36ea10f
parentknf typo (diff)
downloadwireguard-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.c6
-rw-r--r--usr.sbin/pkg_install/info/perform.c14
-rw-r--r--usr.sbin/pkg_install/lib/file.c78
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);