From 7002629c49edc68404c15290bed0e798f0c146d3 Mon Sep 17 00:00:00 2001 From: "Wojciech A. Koszek" Date: Wed, 1 May 2013 05:14:59 +0000 Subject: [PATCH] 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 Tested by: Kimmo Paasiala MFC after: 10 days --- usr.sbin/config/main.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/usr.sbin/config/main.c b/usr.sbin/config/main.c index 3ed5495cdd66..78bb13dd3eba 100644 --- a/usr.sbin/config/main.c +++ b/usr.sbin/config/main.c @@ -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);