diff options
author | Mina Galić <freebsd@igalic.co> | 2024-02-02 15:35:46 +0000 |
---|---|---|
committer | Warner Losh <imp@FreeBSD.org> | 2024-02-02 15:35:49 +0000 |
commit | f4613af424cc93d42f35730fd9862f0c6f964cbd (patch) | |
tree | 1984f16ba6426b08b2d1e6b5eecd16669c92d2dd /usr.sbin | |
parent | 36f0a34ca645d49ec79d60ea7e773374ef0991ea (diff) | |
download | src-f4613af424cc93d42f35730fd9862f0c6f964cbd.tar.gz src-f4613af424cc93d42f35730fd9862f0c6f964cbd.zip |
kldxref: Fix maketempfile function's way of finding the root dir
Rather than assuming that the "root" is passed as directory and will be
marked by a trailing slash, we just assume that the directory, which has
been checked previously to be a directory, is a directory.
This fixes an inconsistency between `kldxref /boot/modules`, which tries
to create the temp file in `/boot/`, and `kldxref /boot/modules/`, which
tries to create it in `/boot/modules/` itself.
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1093
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/kldxref/kldxref.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/usr.sbin/kldxref/kldxref.c b/usr.sbin/kldxref/kldxref.c index 1f06ad811d91..969d07e5677a 100644 --- a/usr.sbin/kldxref/kldxref.c +++ b/usr.sbin/kldxref/kldxref.c @@ -717,12 +717,9 @@ read_kld(char *filename, char *kldname) static FILE * maketempfile(char *dest, const char *root) { - char *p; - int n, fd; + int fd; - p = strrchr(root, '/'); - n = p != NULL ? p - root + 1 : 0; - if (snprintf(dest, MAXPATHLEN, "%.*slhint.XXXXXX", n, root) >= + if (snprintf(dest, MAXPATHLEN, "%s/lhint.XXXXXX", root) >= MAXPATHLEN) { errno = ENAMETOOLONG; return (NULL); |