From f806b046b4eb81831f500b3cbb4458585df4ba13 Mon Sep 17 00:00:00 2001 From: vangyzen Date: Fri, 2 Oct 2015 15:07:02 +0000 Subject: [PATCH] MFC r281787 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 (and tested) Approved by: kib (mentor until recently) Obtained from: Dell Inc. git-svn-id: svn://svn.freebsd.org/base/stable/9@288500 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sbin/dmesg/dmesg.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sbin/dmesg/dmesg.c b/sbin/dmesg/dmesg.c index f2e513f61..4fc51ce72 100644 --- a/sbin/dmesg/dmesg.c +++ b/sbin/dmesg/dmesg.c @@ -112,6 +112,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) -- 2.45.0