summaryrefslogtreecommitdiffstats
path: root/sbin/dmesg
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2015-03-16 21:09:11 +0000
committerian <ian@FreeBSD.org>2015-03-16 21:09:11 +0000
commit44429c482c740a1eecff9a3526ff7a9844e970da (patch)
tree9e1d243dc50486128e14b93176777a214dda56cd /sbin/dmesg
parent8afab6ffc306374d2b05617aafd2dd168ab340e6 (diff)
downloadFreeBSD-src-44429c482c740a1eecff9a3526ff7a9844e970da.zip
FreeBSD-src-44429c482c740a1eecff9a3526ff7a9844e970da.tar.gz
Fix minor fallout from sysctl strings being nulterminated now. The dmesg
code can read the buffer via sysctl or from a core file. In the core file case there will be no nulterm, and the code copes with that, but now in the sysctl case there is a nulterm (there didn't used to be). The least disruptive way to restore the old behavior (and eliminate a spurious '\000' at the end of the output) is to remove the nulterm (by decrementing the buffer length) in the sysctl case.
Diffstat (limited to 'sbin/dmesg')
-rw-r--r--sbin/dmesg/dmesg.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sbin/dmesg/dmesg.c b/sbin/dmesg/dmesg.c
index f0fcb81..9fee416 100644
--- a/sbin/dmesg/dmesg.c
+++ b/sbin/dmesg/dmesg.c
@@ -111,8 +111,10 @@ main(int argc, char *argv[])
if (memf == NULL) {
/*
- * Running kernel. Use sysctl. This gives an unwrapped
- * buffer as a side effect.
+ * Running kernel. Use sysctl. This gives an unwrapped buffer
+ * as a side effect. Remove nulterm (if present) so the value
+ * returned by sysctl is formatted as the rest of the code
+ * expects (the same as the value read from a core file below).
*/
if (sysctlbyname("kern.msgbuf", NULL, &buflen, NULL, 0) == -1)
err(1, "sysctl kern.msgbuf");
@@ -120,6 +122,8 @@ main(int argc, char *argv[])
errx(1, "malloc failed");
if (sysctlbyname("kern.msgbuf", bp, &buflen, NULL, 0) == -1)
err(1, "sysctl kern.msgbuf");
+ if (buflen > 0 && bp[buflen - 1] == '\0')
+ buflen--;
if (clear)
if (sysctlbyname("kern.msgbuf_clear", NULL, NULL, &clear, sizeof(int)))
err(1, "sysctl kern.msgbuf_clear");
OpenPOWER on IntegriCloud