aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric van Gyzen <vangyzen@FreeBSD.org>2015-04-20 20:07:39 +0000
committerEric van Gyzen <vangyzen@FreeBSD.org>2015-04-20 20:07:39 +0000
commitf8ee95484e53987c3413a376e53b2e0ee61d41f9 (patch)
tree9e3ae83415731baa9afba795b5a9aabd3c5a8543
parentc207ff9319ebf3f3a456fb67b47cb23d183ccb59 (diff)
downloadsrc-f8ee95484e53987c3413a376e53b2e0ee61d41f9.tar.gz
src-f8ee95484e53987c3413a376e53b2e0ee61d41f9.zip
dmesg: accommodate message buffer growth between the sysctl calls
Allocate 12.5% extra space to avoid ENOMEM when the message buffer is growing steadily. Reported by: Steve Wahl <steve_wahl@dell.com> (and tested) Approved by: kib (mentor) Obtained from: Dell Inc. MFC after: 1 week
Notes
Notes: svn path=/head/; revision=281787
-rw-r--r--sbin/dmesg/dmesg.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sbin/dmesg/dmesg.c b/sbin/dmesg/dmesg.c
index 9fee41664b30..827ed8e28c2b 100644
--- a/sbin/dmesg/dmesg.c
+++ b/sbin/dmesg/dmesg.c
@@ -118,6 +118,9 @@ main(int argc, char *argv[])
*/
if (sysctlbyname("kern.msgbuf", NULL, &buflen, NULL, 0) == -1)
err(1, "sysctl kern.msgbuf");
+ /* Allocate extra room for growth between the sysctl calls. */
+ buflen += buflen/8;
+ /* Allocate more than sysctl sees, for room to append \n\0. */
if ((bp = malloc(buflen + 2)) == NULL)
errx(1, "malloc failed");
if (sysctlbyname("kern.msgbuf", bp, &buflen, NULL, 0) == -1)