svn commit: r250133 - head/usr.sbin/config

Wojciech A. Koszek wkoszek at FreeBSD.org
Wed May 1 05:15:00 UTC 2013


Author: wkoszek
Date: Wed May  1 05:14:59 2013
New Revision: 250133
URL: http://svnweb.freebsd.org/changeset/base/250133

Log:
  Make the internal assertion correct--only fail when '\0' is found in
  places other than the end of the test section. Otherwise, with kernel
  compiled with Clang which happens to be setting ELF section alignment
  differently config(8) was throwing assert() failure unnecessarily
  
  Reported by:	Kimmo Paasiala <kpaasial (at) gmail.com>
  Tested by:	Kimmo Paasiala <kpaasial (at) gmail.com>
  MFC after:	10 days

Modified:
  head/usr.sbin/config/main.c

Modified: head/usr.sbin/config/main.c
==============================================================================
--- head/usr.sbin/config/main.c	Wed May  1 04:37:45 2013	(r250132)
+++ head/usr.sbin/config/main.c	Wed May  1 05:14:59 2013	(r250133)
@@ -706,17 +706,11 @@ kernconfdump(const char *file)
 		r = fgetc(fp);
 		if (r == EOF)
 			break;
-		/* 
-		 * If '\0' is present in the middle of the configuration
-		 * string, this means something very weird is happening.
-		 * Make such case very visible.  However, some architectures
-		 * pad the length of the section with NULs to a multiple of
-		 * sh_addralign, allow a NUL in that part of the section.
-		 */
-		if (r == '\0' && (size - i) < align)
+		if (r == '\0') {
+			assert(i == size - 1 &&
+			    ("\\0 found in the middle of a file"));
 			break;
-		assert(r != '\0' && ("Char present in the configuration "
-		    "string mustn't be equal to 0"));
+		}
 		fputc(r, stdout);
 	}
 	fclose(fp);


More information about the svn-src-all mailing list