Accommodate a basename(3) that takes a non-const parameter and may
in fact modify the string buffer.
Note that strlen(uf) >= PATH_MAX is already checked by the caller
in _kvm_open().
ok?
Index: lib/libkvm/kvm.c
===================================================================
RCS file: /cvs/src/lib/libkvm/kvm.c,v
retrieving revision 1.66
diff -u -p -r1.66 kvm.c
--- lib/libkvm/kvm.c 28 Jun 2019 13:32:42 -0000 1.66
+++ lib/libkvm/kvm.c 13 Oct 2020 08:55:29 -0000
@@ -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);
--
Christian "naddy" Weisgerber [email protected]