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                          na...@mips.inka.de

Reply via email to