Author: vangyzen
Date: Mon Apr 20 20:07:39 2015
New Revision: 281787
URL: https://svnweb.freebsd.org/changeset/base/281787

Log:
  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_w...@dell.com> (and tested)
  Approved by:  kib (mentor)
  Obtained from:        Dell Inc.
  MFC after:    1 week

Modified:
  head/sbin/dmesg/dmesg.c

Modified: head/sbin/dmesg/dmesg.c
==============================================================================
--- head/sbin/dmesg/dmesg.c     Mon Apr 20 20:06:25 2015        (r281786)
+++ head/sbin/dmesg/dmesg.c     Mon Apr 20 20:07:39 2015        (r281787)
@@ -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)
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to