Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Oct 2016 13:56:15 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r307148 - in head/lib/libc: gen stdlib
Message-ID:  <201610121356.u9CDuF1q013531@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Wed Oct 12 13:56:14 2016
New Revision: 307148
URL: https://svnweb.freebsd.org/changeset/base/307148

Log:
  Add comment on use of abort() in libc
  
  Suggested by:	jonathan (in review D8133)

Modified:
  head/lib/libc/gen/arc4random.c
  head/lib/libc/stdlib/random.c

Modified: head/lib/libc/gen/arc4random.c
==============================================================================
--- head/lib/libc/gen/arc4random.c	Wed Oct 12 13:51:41 2016	(r307147)
+++ head/lib/libc/gen/arc4random.c	Wed Oct 12 13:56:14 2016	(r307148)
@@ -144,8 +144,15 @@ arc4_stir(void)
 		arc4_init();
 		rs_initialized = 1;
 	}
-	if (arc4_sysctl(rdat, KEYSIZE) != KEYSIZE)
-		abort(); /* Random sysctl cannot fail. */
+	if (arc4_sysctl(rdat, KEYSIZE) != KEYSIZE) {
+		/*
+		 * The sysctl cannot fail. If it does fail on some FreeBSD
+		 * derivative or after some future change, just abort so that
+		 * the problem will be found and fixed. abort is not normally
+		 * suitable for a library but makes sense here.
+		 */
+		abort();
+	}
 
 	arc4_addrandom(rdat, KEYSIZE);
 

Modified: head/lib/libc/stdlib/random.c
==============================================================================
--- head/lib/libc/stdlib/random.c	Wed Oct 12 13:51:41 2016	(r307147)
+++ head/lib/libc/stdlib/random.c	Wed Oct 12 13:56:14 2016	(r307148)
@@ -279,8 +279,15 @@ srandomdev(void)
 
 	mib[0] = CTL_KERN;
 	mib[1] = KERN_ARND;
-	if (sysctl(mib, 2, state, &len, NULL, 0) == -1 || len != expected)
+	if (sysctl(mib, 2, state, &len, NULL, 0) == -1 || len != expected) {
+		/*
+		 * The sysctl cannot fail. If it does fail on some FreeBSD
+		 * derivative or after some future change, just abort so that
+		 * the problem will be found and fixed. abort is not normally
+		 * suitable for a library but makes sense here.
+		 */
 		abort();
+	}
 
 	if (rand_type != TYPE_0) {
 		fptr = &state[rand_sep];



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201610121356.u9CDuF1q013531>