summaryrefslogtreecommitdiffstats
path: root/lib/libkvm/kvm.c
diff options
context:
space:
mode:
authornaddy <naddy@openbsd.org>2020-10-14 19:28:22 +0000
committernaddy <naddy@openbsd.org>2020-10-14 19:28:22 +0000
commit4070ddb0e0af3cb676846fec394d318d26ef38fa (patch)
treea2057824ddaa80d47c6169871c4e7f9c493e395e /lib/libkvm/kvm.c
parentreplace a MAXPATHLEN that slipped back in with PATH_MAX so userland won't (diff)
downloadwireguard-openbsd-4070ddb0e0af3cb676846fec394d318d26ef38fa.tar.xz
wireguard-openbsd-4070ddb0e0af3cb676846fec394d318d26ef38fa.zip
Accommodate POSIX basename(3) that takes a non-const parameter and
may modify the string buffer. ok millert@
Diffstat (limited to 'lib/libkvm/kvm.c')
-rw-r--r--lib/libkvm/kvm.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/libkvm/kvm.c b/lib/libkvm/kvm.c
index 610173686e3..63e67fd4b95 100644
--- a/lib/libkvm/kvm.c
+++ b/lib/libkvm/kvm.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kvm.c,v 1.66 2019/06/28 13:32:42 deraadt Exp $ */
+/* $OpenBSD: kvm.c,v 1.67 2020/10/14 19:28:22 naddy Exp $ */
/* $NetBSD: kvm.c,v 1.43 1996/05/05 04:31:59 gwr Exp $ */
/*-
@@ -676,12 +676,13 @@ static int
kvm_dbopen(kvm_t *kd, const char *uf)
{
char dbversion[_POSIX2_LINE_MAX], kversion[_POSIX2_LINE_MAX];
- char dbname[PATH_MAX];
+ char dbname[PATH_MAX], ufbuf[PATH_MAX];
struct nlist nitem;
size_t dbversionlen;
DBT rec;
- uf = basename(uf);
+ strlcpy(ufbuf, uf, sizeof(ufbuf));
+ uf = basename(ufbuf);
(void)snprintf(dbname, sizeof(dbname), "%skvm_%s.db", _PATH_VARDB, uf);
kd->db = dbopen(dbname, O_RDONLY, 0, DB_HASH, NULL);